ワークシート関数をVBAの中で使うには?

Question 20.4 Previous Next
マクロの中に、Excel95で覚えた関数を使用できますか。
Answer   Copyright (C) 1999.4.27 永井善王
講義 VBAでワークシート関数を使う方法は、2つあります。
その第1は、VBAからワークシート関数を呼び出す方法で、第2は、VBAを使ってセルにワークシート関数を挿入する方法です。
また、VBAに同じ機能があるために、わざわざ使う必要がないワークシート関数があります。たとえば、VBAでは & 演算子を使って複数の文字列を結合できるので、Concatenate関数は使わなくても済みます。
1. VBAからワークシート関数を呼び出す方法

・VBAのステートメントで使うことができるワークシート関数は、Excelのヘルプのトピックの検索で、「Visual Basicで使用できるワークシート関数一覧」を表示すれば、見ることができます。

・マクロの書き方
【 Excel 95 (97、98、2000) の場合 】
ワークシート関数を使うステートメントには、必ず Application識別子を付けて下記のように書きます。
    合計 = Application.Sum(Range("A1:A5"))
【 Excel 97以上の場合 】
ワークシート関数を使うステートメントには、 Application.WorksheetFunction識別子を付けて下記のように書きます。
    合計 = Application.WorksheetFunction.Sum(Range("A1:A5"))
・書き方の注意点
「引数にセル範囲の参照を必要とするワークシート関数を使う場合は、Rangeオブジェクトを指定しなければならない」というルールです。上記の例では、「Range("A1:A5")」の部分が、これに当ります。

きちんと Application( .WorksheetFunction)識別子を付けて書いたのに、うまく動かない場合、このルールを守っていない可能性があります。くわしく知りたければ、ここをクリックして見てください。
2. セルにワークシート関数を挿入する方法

関数をワークシートのセルにハンド入力したときと同じ状態を、マクロで作ります。例えば、下記のように書きます。
    Range("A6").Formula = "=SUM(A1:A5)"
    合計 = Range("A6").Value
この方法は、「Visual Basicで使用できるワークシート関数」以外の関数にも使えます。
なお、SUM関数の引数の文字列の作り方を知りたい場合は、「
VBAでSUM関数をセルにセットするため引数の作り方を知りたい」のページを参考にしてください。
このホームページでも、
Macroの Contentsのページの末尾に 「関数など」として一覧を掲載しています。そこに表示されている関数名をクリックすれば、その関数を使用しているページが表示されますので、使い方の事例を見ることができます。

また、ワークシート関数の中のデータベース関数については、
ここをクリック して見てください。

 

Excel VBA Macro