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


