안녕하세요! 아래 코드를 실행하려고하는데 오류 1004 : WorksheetFunction 클래스의 Match 속성을 가져올 수 없습니다.. MATCH() 함수는 # N/A을 반환하므로 INDEX 변수에 할당 할 필요가 없습니다. (또한 오류가 발생할 수 있다고 생각합니다.). 이 가능성을 설명하기 위해 코드를 수정하는 방법에 대해 조언 할 수 있습니까?VBA의 MATCH() 함수
Sub Debugging()
Workbooks("Problem.xls").Worksheets(1).Activate
Cash_Rows = 5
Share_Rows = 6
If Cash_Rows <= Share_Rows Then
Range("A1:A" & Cash_Rows).Select
With Selection.Interior
.ThemeColor = xlThemeColorAccent6
.TintAndShade = 0.399975585192419
End With
Count_Cash = Application.WorksheetFunction.CountIf(Range("A:A"), "L*")
For Each cell In Range("A1:A" & Cash_Rows)
If CStr(cell.Value) Like "L*" Then
Range("A" & cell.Row & ":" & "D" & cell.Row).Interior.Color = 65535
Dim Index As Integer
Index = Application.WorksheetFunction.Match(CStr(cell.Value), Range("F2:" & "F" & Share_Rows), 0)
Range("F" & Index & ":" & "I" & Index).Interior.Color = 65535
End If
Next
If Count_Cash = 0 Then
MsgBox "You do not have any matching ID+Amount between Cash and Shares booking. It's OK!"
Else
MsgBox "You have " & Count_Cash & " matching transactions. Check them!"
End If
Else
MsgBox "Do not worry. Be happy!"
End If
End Sub
감사합니다.
버전은 무엇? [this] (https://stackoverflow.com/questions/20028769/match-function-vba-not-working-properly?rq=1)에 따라 'Application.WorksheetFunction.Match' 대신'Application.Match'를 시도해 볼 수 있습니다. . ** PS ** 사이트에 오신 것을 환영합니다! 품질 좋은 답변을 얻을 수있는 질문에 대한 자세한 내용은 [둘러보기] (https://stackoverflow.com/tour)를 확인하십시오. – cxw
답장을 보내 주셔서 감사합니다. 저는 Excel 2010을 사용하고 있습니다. 귀하의 팁이 실제로 도움이되었지만, "인덱스"변수의 선언을 변경할 때만 - Integer 유형에서 Variant로 변경되었습니다 (그렇지 않으면 _Type Mismatch_ 오류가 발생 함). 나는 내 질문에 언급 한 잠재적 인 문제와 관련이 있다고 생각한다. - 어떤 점에서 MATCH() 함수가 숫자 대신 "# N/A"를 반환하면 명시 적으로 인덱스가 정수일 수 있다고 말했기 때문에 오류가 발생한다. 남아있는 문제는 MATCH()에서 "# N/A"를 가져올 가능성을 처리하지 않으면이 코드가 더 이상 실행되지 않는다는 것입니다. 그래서 나는 지금 그것에 대해 무엇을해야한다고 생각할 것입니다. –
CStr (cell.value) 대신 셀을 사용할 수 있다고 생각합니다. 이상하게 생각합니다.이 함수는 내가 사용하는 함수이며 잘 작동합니다. 나는 보통 수식에서 먼저 Excel로 작업 한 다음 그 수식을 나중에 VBA 코드로 변경합니다. – Lowpar