« Using For Statements and Templates about it | トップページ | Using worksheet functions in VBA »

2018年4月30日 (月)

ワークシート関数をVBAで使う

VBAの関数と
セルに入力して使う関数(ワークシート関数)は
同じものではありません。

ワークシート関数にあってVBAの関数にないものは多いです。
ですので、ワークシート関数をVBAで使いたい場合はよくあります。

ワークシート関数をVBAで使う方法を2つ挙げます。

1.VBAのコードの中で使う
2.VBAでセルにワークシート関数を入力して計算結果を使う。


1.VBAのコードの中で使う

VBAの関数を使うようにワークシート関数を使う方法です。
使用例:CountIf関数

Application.WorksheetFunction.CountIf(Range("A1:C3"), "A")

「Application.」は省略できるので

WorksheetFunction.CountIf(Range("A1:C3"), "A")

でもOKです。

VBEで入力するときは「WorksheetFunction.」まで入力すると
以下の画像のように入力できる関数が表示されます。
Vba20180430a

VBAでワークシート関数の使う時は
引数の指定方法が少し異なるので注意してください。
例えば、セルの範囲の指定したい時
セルに直接入力するときは「=COUNTIF(A1:C3, "A")」とします。
VBAで使用するときは上記に示したとおりRangeプロパティで範囲を指定します。
また、RangeプロパティをセットしたObjectを指定することもできます。

コードはこちら

ワークシート関数の使い方1:

Sub macro180430a()
'ワークシート関数の使い方1

    Dim obj As Object
    Set obj = Range("A1:C3")
    Range("A5") = WorksheetFunction.CountIf(obj, "A")
   
End Sub

実行結果:
Vba20180430b

VBEの画面でVBAの関数の文字にカーソルを持っていってF1を押すと
その関数についてのヘルプが表示されます。
ワークシート関数の場合はこの方法ではヘルプは表示されないので
VBAのヘルプではなくExcelのヘルプで使用方法を調べてください。

VBAで使えるワークシート関数の一覧は下記Microsoftのページを参照してください。
WorksheetFunction オブジェクト (Excel)


2.VBAでセルにワークシート関数を入力して計算結果を使う。

セルに数式を入力するには「Formula」プロパティを使用します。

Range("A5").Formula = "=CountIf(A1:C3, ""A"")"

まあ、「.Formula」はなくても数式として認識して計算してくれます。
あと、文字列にダブルクォーテーション(")を含めるときは
「""」と2つ重ねます。
上記の例では、
Range("A5")の値を参照すればワークシート関数の計算結果を使えます。

コードはこちら

ワークシート関数の使い方2:

Sub macro180430b()
'ワークシート関数の使い方2

    Range ("A5").Formula = "=CountIf(A1:C3, ""A"")"
    Debug.Print Range("A5").Formula
    Debug.Print Range("A5")
   
End Sub

実行結果:
Vba20180430c

ワークシート関数の使い方1では、
セルA5には「2」という計算結果が入っていたのですが
使い方2では式が入力されているのがわかります。
「Range("A5").Formula」で数式自体が取り出せます。

|

« Using For Statements and Templates about it | トップページ | Using worksheet functions in VBA »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: ワークシート関数をVBAで使う:

« Using For Statements and Templates about it | トップページ | Using worksheet functions in VBA »