응용 프로그램 정의 또는 개체 정의 오류가 발생합니까?

응용 프로그램 정의 또는 개체 정의 오류가 발생합니까?

if 문에서 계속 오류가 발생합니다. 내가 뭘 잘못하고 있는지 잘 모르겠습니다. 이에 대한 도움을 주시면 대단히 감사하겠습니다.

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

감사해요

답변1

주석 처리되지 않은 항목에 대해 이야기하는 경우 if선택할 필요가 없으며 구문 설탕을 사용할 수 있습니다.

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

예를 들어 함수를 사용하는 것처럼 범위를 처리하십시오.Sheet1!B:B

worksheetfunction오류를 허용하는 를 생략할 수도 있습니다 (수식이 오류를 반환하는 경우).

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

본질적으로 '일치'가 데이터를 올바르게 참조하지 않습니다. 오류 2015 - 참조이 문서


더 큰 문제는 다음과 같습니다.어떻게당신은 이것에 대해 갈 것입니다. 오류를 처리하려면 오류 처리를 사용해야 합니다. 이게 더 나을 것 같아요 -

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

관련 정보