Excel VBAを使用してワークシート関数を実行する方法を2つほど紹介します。
例えば、「A1セルからJ1セル」の10個の数字の合計をSUM関数で算出して、
算出結果をA2セルに出力する場合は、Excelで表現すると下の図のようになります。
それでは、VBAで同じようにSUM関数を使用してみます。
1.WorksheetFunction オブジェクトを使用する場合
WorksheetFunction.Sum メソッドは、 Range オブジェクトを引数として受け取り、その範囲の値の合計を返します。
Sub ワークシートSUM関数()
Dim SUMResult As Double
SUMResult = WorksheetFunction.Sum(Range("A1:J1"))
Range("A2").Value = SUMResult
End Sub
2.Evaluateメソッドを使用する場合
Evaluate メソッドを使用することで、ワークシート関数を文字列として直接使用することができます。マクロの知識が浅い人がコードを見るときは、こちらの方が理解しやすかったそうです。
Sub ワークシートSUM関数2()
Dim sumResult As Double
sumResult = Evaluate("SUM(A1:J1)")
Range("A2").Value = sumResult
End Sub
ただし、Evaluate関数を使用する場合は数式が文字列であるため、完璧に入力する必要があるため、実際にコードを入力する場合は「WorksheetFunction オブジェクト」を使用する方法がおすすめです。
「WorksheetFunction オブジェクト」を使用する場合は、使用できる関数が画面に表示されて選択することが可能であり、関数の構成のヒントも表示されるので、Excelでの関数使用と同じイメージで関数の入力が行えます。
また、DAY関数等のVBA関数として存在するものはワークシート関数として使用できないため、使用可能な関数を選択することで、関数使用時のミスも回避できます。
コメント