Estou recebendo um erro definido pelo aplicativo ou definido pelo objeto?

0

Eu continuo recebendo o erro na minha declaração if, não tenho certeza do que estou fazendo de errado, qualquer ajuda com isso seria muito apreciada.

lr = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

For i = 2 To lr

     DynamicLR = Sheets("RA Inventory").Cells(Rows.Count, 1).End(xlUp).Row


    'If Application.WorksheetFunction.IsNumeric(Application.WorksheetFunction.Match(ActiveSheet.Range("D" & i), Sheets("RA Inventory").Range("D2:D" & DynamicLR), 0)) = False Then
    If Application.WorksheetFunction.IfError(Application.WorksheetFunction.IsNumber(Application.WorksheetFunction.Match(ActiveSheet.Range("D" & i), Sheets("RA Inventory").Range("D:D").Select, 0)), False) = False Then

         ActiveSheet.Range("A" & i).Select
         Selection.Copy
         Worksheets("RA Inventory").Activate
         ActiveSheet.Range("A" & DynamicLR).Select
         ActiveSheet.Paste

Obrigado

    
por Taytor87 26.01.2015 / 13:10

1 resposta

1

Se você está falando sobre o não comentado if - você não precisa selecionar e você pode usar o açúcar sintático:

If [iferror(isnumber(match(A1,B:B,0)),false)] = True Then
     MsgBox ("True")
     Else: MsgBox ("False")
end if

Apenas trate os intervalos como faria com as funções, por exemplo Sheet1!B:B

Você também pode deixar de fora o worksheetfunction , o que permitirá erros (se a sua fórmula retornar um erro)

With Application
   if .iferror(.isnumber(.match( ... 
end with

Essencialmente, sua "correspondência" não está fazendo referência aos dados corretamente. Erro 2015 - consulte esta documentação

Um problema maior pode ser como você está lidando com isso. Você deve usar o tratamento de erros para lidar com o erro. Isso seria melhor -

Sub test()
lr = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

For i = 2 To lr

    x = Application.Match(ActiveSheet.Range("B" & i), Sheets("Sheet1").Range("B1:B" & lr), 0)
    If IsNumeric(x) Then
         MsgBox (x)
    End If
Next


End Sub
    
por 26.01.2015 / 14:04