ワークシート関数を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.」まで入力すると
以下の画像のように入力できる関数が表示されます。
VBAでワークシート関数の使う時は
引数の指定方法が少し異なるので注意してください。
例えば、セルの範囲の指定したい時
セルに直接入力するときは「=COUNTIF(A1:C3, "A")」とします。
VBAで使用するときは上記に示したとおりRangeプロパティで範囲を指定します。
また、RangeプロパティをセットしたObjectを指定することもできます。
コードはこちら
Sub macro180430a() Dim obj As
Object |
実行結果:
VBEの画面でVBAの関数の文字にカーソルを持っていってF1を押すと
その関数についてのヘルプが表示されます。
ワークシート関数の場合はこの方法ではヘルプは表示されないので
VBAのヘルプではなくExcelのヘルプで使用方法を調べてください。
VBAで使えるワークシート関数の一覧は下記Microsoftのページを参照してください。
WorksheetFunction オブジェクト (Excel)
2.VBAでセルにワークシート関数を入力して計算結果を使う。
セルに数式を入力するには「Formula」プロパティを使用します。
Range("A5").Formula = "=CountIf(A1:C3, ""A"")"
まあ、「.Formula」はなくても数式として認識して計算してくれます。
あと、文字列にダブルクォーテーション(")を含めるときは
「""」と2つ重ねます。
上記の例では、
Range("A5")の値を参照すればワークシート関数の計算結果を使えます。
コードはこちら
Sub macro180430b() Range
("A5").Formula = "=CountIf(A1:C3, ""A"")" |
実行結果:
ワークシート関数の使い方1では、
セルA5には「2」という計算結果が入っていたのですが
使い方2では式が入力されているのがわかります。
「Range("A5").Formula」で数式自体が取り出せます。
| 固定リンク
この記事へのコメントは終了しました。

コメント