最近のMicrosoft Officeのマクロは、VBA(Visual Basic for Applications)を使って記述します。
VBAは文法的には、プログラミング言語VB(Visual Basic)と同じなので、VBがわかる人ならVBAはすぐに使えますし、VBAがちゃんとわかっている方ならもう少し勉強するとVBを使えるようになります。
そんな兄弟関係にあるVBとVBAですが、VBAの方が便利な点と言えば、VBAのAの部分、「for Applications」の部分でしょう。
つまり、Word・Excel・PowerPointといった各Officeアプリケーションの特長的な部分を利用できる点が、VBAのVBに対する優位性としてあげられると思います。
Excelの特長的な機能というのはいろいろありますが、ワークシート関数はその一つです。
VBAでワークシート関数を使う書き方
VBAにはVBA内で利用できるVBA関数が多数用意されていますが、それ以外にExcel VBAではExcelのワークシート関数もVBAの中で利用できるわけです。(但し、すべてのワークシート関数が利用できるわけではありません。)WorksheetFunction.ワークシート関数名
例えば、VBAの中でA1:A1000セルの合計を求めるのならば、
WorksheetFunction.Sum(Range("A1:A1000"))
といった記述をします。
WorksheetFunctionオブジェクトに含まれるメソッドとして、SUM関数を利用していることになります。
プログラマな方の場合、自分の希望する処理を行う関数が用意されていない場合、自分で関数を作成するということはよく行うわけですが、Excel VBAの場合ワークシート関数が利用できるわけですから、ワークシート関数に自分の希望する処理に利用可能なものがないかを調べてみるというのは必要なことだと思います。
また、プログラムの中では様々なループ処理が行われるものですが、For〜Nextなどのループ処理を行うよりも、ワークシート関数を利用してしまう方が簡単かつ高速に処理できてしまうことも少なくありません。
折角ExcelのVBAを利用するのならば、Excel固有の機能・ワークシート関数の利用は前向きに考えるべきじゃないかと思います。
Application.ワークシート関数という書き方について
なお、
WorksheetFunction.Sum(Range("A1:A1000"))
ではなく
Application.Sum(Range("A1:A1000"))
といった記述を見かけることもあります。
「Application.Sum(Range("A1:A1000"))」は、古いバージョンとの互換性で許可されている記述方法です((Excel 95まではワークシート関数はApplicationオブジェクトのメソッドとして利用していました))ので、現在は、
WorksheetFunction.Sum(Range("A1:A1000"))
あるいは、Applicationプロパティから書きたいのなら、
Appllication.WorksheetFunction.Sum(Range("A1:A1000"))
といった記述を使うべきでしょう。
- Newer:結合プロパティダイアログの表示方法
- Older:あなたを変える「稼ぎ力」養成講座 決算書読みこなし編
Home » エクセルマクロ・Excel VBAの使い方 » WorksheetFunction » VBAでワークシート関数を利用するには-WorksheetFunctionプロパティ