VBAでワークシート関数を利用

VBAでワークシート関数を利用する。

VBAでワークシート関数を使いたい場合はApplicationオブジェクトのWorksheetFunctionプロパティを利用することでできます。

関数自体の使い方(引数の指定など)はワークシート上で使う時と同じように使えますが、実行結果の値が取得できない(#VALUE、#N/Aなど)場合はエラーとなるので、利用時にはエラーを考慮した処理が必要になります。
また関数のすべてが利用できるわけではなく、利用できない関数が一部あります。

サンプルコードでは “SumIf“、”VLookup“、”Find“を例で記載しています。
コード上の”{検索条件}”には任意の文字列を入力して実行してください。

動作確認
Windows10/Excel2016:○
Windows11/Excel2024:○

'******************************************************************
' WorksheetFunctionでワークシート関数を利用
'*****************************************************************
Sub useWorksheetFunction()

    With Sheets("Sheet1")
        On Error Resume Next
        '--------------------------------------------------------------------------------
        'SumIf関数
        '第1引数:検索範囲の指定
        '第2引数:検索条件
        '第3引数:合計範囲の指定
        Dim sRtn1 As String
        sRtn1 = WorksheetFunction.SumIf(.Range("A1:A10"), "{検索条件}", .Range("B:B"))
        If Err.Number = 0 Then
            Debug.Print sRtn1
        Else
            Debug.Print "Error:" & Err.Number & " - " & Err.Description
        End If
        
        '--------------------------------------------------------------------------------
        'VLookup関数
        '第1引数:検索条件
        '第2引数:検索範囲の指定
        '第3引数:取得する列番号
        '第4引数:検索方法(True:近似一致、False:完全一致)
        Dim sRtn2 As String
        sRtn2 = WorksheetFunction.VLookup("{検索条件}", .Range("A1:C10"), 2, False)
        If Err.Number = 0 Then
            Debug.Print sRtn2
        Else
            Debug.Print "Error:" & Err.Number & " - " & Err.Description
        End If

        '--------------------------------------------------------------------------------
        'Find関数
        '第1引数:検索文字列
        '第2引数:検索対象
        '第3引数:開始位置
        Dim sRtn3 As String
        sRtn3 = WorksheetFunction.Find("{検索文字}", .Range("E1"), 1)
        If Err.Number = 0 Then
            Debug.Print sRtn3
        Else
            Debug.Print "Error:" & Err.Number & " - " & Err.Description
        End If
        
        On Error GoTo 0
    End With

End Sub