Ir para conteúdo
Fórum Script Brasil
  • 0

erro 91


DANYY

Pergunta

Boa tarde a todos!! Criei uma macro que le a célula ativa de uma planilha armazena o valor em uma variavel e procura esse valor em outra planilha. Esta funcionando corretamente até o momento que um dos valores localizados não é encontrado na planilha de pesquisa gerando o erro 91.

Segue a macro, sendo a planilha Relatorio Desconto.xlsx a planilha onde contem o valor que deve ser pesquisado na planilha Retorno pmsp.xlsm.

Ao depurar o código o erro aparece na linha selection.find

Segue:

Sub desconto()

Dim ra As String

Windows("RELATORIO DESCONTO.XLSX").Activate 'abre o arquivo de descontos

Range("A2").Select 'seleciona celula A2

Do While ActiveCell.Value <> ""

ra = ActiveCell.Value

Windows("RETORNO PMSP.xlsm").Activate

Columns("AV:AV").Select

On Error GoTo trataerro

selection.Find(What:=ra, After:=ActiveCell, LookIn:=xlFormulas, _

LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _

MatchCase:=True, SearchFormat:=False).Activate

ActiveCell.Offset(0, 7).Select

Windows("RELATORIO DESCONTO.xlsx").Activate

ActiveCell.Offset(0, 2).Select

Selection.Copy

ActiveCell.Offset(0, -2).Select

Windows("RETORNO PMSP.xlsm").Activate

ActiveSheet.Paste

Application.CutCopyMode = False

ActiveCell.Offset(0, 1).Select

ActiveCell.FormulaR1C1 = "=+RC[-29]-RC[-1]"

trataerro:

Windows("RELATORIO DESCONTO.XLSX").Activate

ActiveCell.Offset(1, 0).Select

Loop

End Sub

Editado por DANYY
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Boa tarde Benhur e obrigada pela resposta. Mas ao colocar o tratamento de erro quando não localizado a variavel a macro não deveria ser direcionada a ler novamente a planilha de desconto e fazer o loop no proximo registro??

Link para o comentário
Compartilhar em outros sites

  • 0

Oi, Danyy!

Nesses casos prefiro fazer assim:

Sub Erro()

On Error Resume Next 'De preferência no início

Do While ...

selection.Find...

If Err.Number <> 0 Then 'Se ocorrer um erro a propriedade Number será diferente de zero

msg = MsgBox("Erro " & Err.Number & " " & Err.Description) ' Se quizer mostrar o erro

Windows("RELATORIO DESCONTO.XLSX").Activate
ActiveCell.Offset(1, 0).Select

Err.Clear 'Limpa o erro para a próxima execução

End If

loop...

Acredito que o uso de 'On Error GoTo trataerro' seria mais indicado em casos que 'trataerro:' fosse usado fora do loop, que tivesse maior números e de preferência antes de 'End Sub' para encerrar o procedimento.

espero ter ajudado!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...