セルに直接記述して利用できるワークシート関数をVBAで利用する方法について紹介していきます。
ワークシート関数の使い方
指定したセルの値を合計するSum関数を利用してみます。
Sub test()
Dim total As Long
total = WorksheetFunction.Sum(Range("B2", "C2"))
Debug.Print total
End Sub
※コードの見方
白・・・コード
紫・・・コメント
青・・・プロシージャの宣言
その他・・・コードを見やすくするために使うかも
白・・・コード
紫・・・コメント
青・・・プロシージャの宣言
その他・・・コードを見やすくするために使うかも
VBAでワークシート関数を利用するには上記のコードのように WorksheetFunction. 関数名で記述する必要があります。
今回の例ではSum関数を利用しているので、本来の書式通りに合計する範囲を引数として指定しています。
戻り値はユーザー定義関数同様に、変数に格納する必要があるので整数型で宣言したtotalに代入しています。
あとは下記のようにイミディエイトウィンドウに出力すれば中身を確認することができます。
Debug.Print total
セルに出力したい場合は下記のようにRangeでセル指定してから代入すれば表示されます。
Range("A2").Value = total
VBAでワークシート関数を使う際の注意点
Sum関数を例にして説明します。
通常の仕様であれば、セルに関数が入っていると計算する値が変わってしまった場合でも再計算されて正しい合計値が表示されます。
ですが、VBAでSum関数を利用して合計値を代入すると、計算する値が変わった場合でも合計値が再計算されることはありません。
あくまでコードを実行して計算した時点での値の合計値となります。
ワークシートに直接記述する場合とVBAとしてコード内で関数を利用する場合では動作が異なりますので注意が必要です。
値が変わった時に再計算する方法
計算する値が変わった場合に再計算できるようにするには合計値をだにゅうするのではなく、計算式を代入するコードを書く方が良いです。
先ほどの合計値を計算するコードは下記のように書き直すことができます。
Sub test()
Range("D2").Formula = "=sum(B2:C2)"
End Sub
これはD2セルに(“”)ダブルクォーテーションで囲っている数式を代入するコードです。
数式をセルに記述しているだけなので計算式が変わっても再計算されるようになります。