[ VBA ] シート上で使えるエクセル関数をマクロから使用する ( WorksheetFunction )

Pocket

エクセルでは、エクセルシート上で使えるエクセル関数が多数用意されています。エクセルのバージョンにアップに伴い追加されていきますので、(下位)互換には注意が必要となる場合もあります。

ここでは、これらのエクセル関数をマクロ内で使用するサンプルを掲載しています。

スポンサーリンク

エクセルシート関数使用例

エクセルシート関数の使用例になります。ここでは、COUNTIF 関数を使用して、範囲内でセルの値が 1 のセルの個数を計算しています。

エクセルシート関数

エクセルシート関数

VBA でエクセルシート関数を使用する

上記のエクセルシート関数を VBA で使用するには WorksheetFunction オブジェクトを使用します。

    Dim ret As Integer
    
    ' エクセルシート関数を使用する
    ret = WorksheetFunction.CountIf(Range("G3:I3"), "=1")
    
    ' 条件を満たすセルの個数を設定する
    Range("J3").Value = ret

なお、WorksheetFunction オブジェクトを変数に代入して使用することもできます。大量に使用するときには、多少読みやすくなるかもしれません。

大量に使用することは、可読性を下げるような気はしますが。。

    Dim ret As Integer
    
    Dim wf As WorksheetFunction
    
    ' ワークシート関数オブジェクトを代入
    Set wf = WorksheetFunction
    
    ' ワークシート関数を実行
    ret = wf.CountIf(Range("G3:I3"), "=1")
    
    ' 条件を満たすセルの個数を設定する
    Range("J3").Value = ret

    Set wf = Nothing

なお、何人かの人は、「 ワークシート関数はエクセルシート上でのみ使え! 」 と言っていました。

上から目線のドヤ顔は、気分は悪くなりましたが一理あるなとも思いました。本人がどういうつもりで言っているのかはわかりませんが。

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *