"Worksheetfunction 클래스의 일치 속성을 가져올 수 없습니다"문제에 대한 많은 주제를 보았습니다. 하지만 내 코드를 수정할 수 없습니다.
이 코드가 작동하지 않는 이유는 무엇입니까?
rowNum = Application.WorksheetFunction.Match(aNumber, Sheet5.Range("B16:B615"), 0)
그러나이 코드가 몇 행 더 높으면 작동합니다.
rowNum2 = Application.WorksheetFunction.Match(originCode, Sheet7.Range("B10:B17"), 0)
내 두 줄의 유일한 차이점은 rowNum2에서 조회를 위해 String을 사용하고 rowNum에서 정수를 사용했다는 것입니다. 조회 값이 문자열이어야 할 수 있습니까?
내 문제에 @ 업데이트
Select Case service
Case "Low Cost"
MsgBox Sheet5.Cells(16, "B") 'Gets value 0.5
Set Rng = Sheet5.Range("B16:B615")
If Not IsError(Application.Match("0.5", Rng, 0)) Then 'But jumps to Else
rowNum = Application.Match(Weight, Rng, 0) 'Weight = 0.5
MsgBox rowNum
Else
MsgBox "error"
End If
Case "Standard"
Case "Express"
Case Else
End Select
@ 업데이트 2
!!! "0.5"는 0.5가 아닌 문자열이므로 0.5는 "0.5"가 아닙니다 (코드에서 내 오류였습니다).
범위에서 값을 찾을 수 없기 때문에이 오류가 발생합니다. 문자열이나 정수는 중요하지 않습니다. 내 경험상 가장 좋은 방법은 값이 존재하는지 먼저 확인하는 것입니다.
아래에서 CountIf를 사용했지만 범위에 값이 있는지 확인하는 방법에는 여러 가지가 있습니다.
Public Sub test()
Dim rng As Range
Dim aNumber As Long
aNumber = 666
Set rng = Sheet5.Range("B16:B615")
If Application.WorksheetFunction.CountIf(rng, aNumber) > 0 Then
rowNum = Application.WorksheetFunction.Match(aNumber, rng, 0)
Else
MsgBox aNumber & " does not exist in range " & rng.Address
End If
End Sub
대체 방법
Public Sub test()
Dim rng As Range
Dim aNumber As Variant
Dim rowNum As Long
aNumber = "2gg"
Set rng = Sheet5.Range("B1:B20")
If Not IsError(Application.Match(aNumber, rng, 0)) Then
rowNum = Application.Match(aNumber, rng, 0)
MsgBox rowNum
Else
MsgBox "error"
End If
End Sub
또는
Public Sub test()
Dim rng As Range
Dim aNumber As Variant
Dim rowNum As Variant
aNumber = "2gg"
Set rng = Sheet5.Range("B1:B20")
rowNum = Application.Match(aNumber, rng, 0)
If Not IsError(rowNum) Then
MsgBox rowNum
Else
MsgBox "error"
End If
End Sub
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다