1. ホーム
  2. vba

[解決済み】エクセルVBA。一致しない、エラー "WorksheetFunctionクラスのMatchプロパティを取得できない"

2022-01-27 19:35:25

質問

どうしても、これがうまくいきません。上記のようなエラーが出てしまいます。

このテーブルがあり、コードが他の列のどこかにある自分のサブコードと一致するかどうかを調べようとしているのですが、エラーになります。あなたの助けは非常に感謝されています。

Sub testing()

    Dim m1 As long
    Dim myrange As Range

    Set myrange = Worksheets("Sheet1").Range("B2:B23")

    For e = 2 To 23
        m1= Application.WorksheetFunction.Match(Cells(e, 1).Value, myrange, 0)

        If m1 > 0 Then
            Cells(e, 3).Value = "Yes"
        Else
            Cells(e, 3).Value = "No"
        End If
    Next e

MsgBox "Complete!"

End Sub

解決方法は?

を使用します。 Application.Match 関数を使用すると、エラーをトラップする機能が向上します。この関数を使用した場合 WorksheetFunction.Match マッチしない場合はエラーが返され、今回のようになります。

If Not IsError(Application.Match(Cells(e, 1).Value, myrange, 0)) Then
    'Do stuff when the match is found
    Cells(e, 3).Value = "Yes"
Else:
    Cells(e, 3).Value = "No"
End If

を使用することも可能です。 CountIf 関数を使用します。

If Application.WorksheetFunction.CountIf(myRange, Cells(e,1).Value) > 0 Then
    Cells(e,3).Value = "Yes"
Else:
    Cells(e,3).Value = "No"
End If

どちらのアプローチも m1 変数の中でこの変数を代入することができます。 True の部分は If/Then ステートメントを識別する必要がある場合 ここで にマッチします。