最近の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"))
といった記述を使うべきでしょう。
Home » エクセルマクロ・Excel VBAの使い方 » WorksheetFunction » VBAでワークシート関数を利用するには-WorksheetFunctionプロパティ
- Newer:結合プロパティダイアログの表示方法
- Older:あなたを変える「稼ぎ力」養成講座 決算書読みこなし編
TrackBack:7
- TrackBack URL
- VBAで使用できるワークシート関数一覧 from インストラクターのネタ帳
- 対象:Excel 97,2000,2002,2003 VBA(Visual Basic for Applications)でワークシート関数を利用できることをご紹介しましたが、VBE(Visual Basic Editor)のヘルプ「Visual Basic で使用できるワークシート関数一覧」を元に、ワークシート関数の中でVBAで利用可能な関...
- 空白行を削除するマクロ from インストラクターのネタ帳
- 対象:Excel2002, Excel2003, Excel2007, Excel2010 「エクセル マクロ 空白行削除」 「Exce VBA 空白の...
- VBAで奇数・偶数判定を行う-Mod演算子 from インストラクターのネタ帳
- Excel(エクセル)VBAで奇数・偶数の判定を行うには、割り算をしたときの余りを求める演算子Modを使って、2で割り算をした余りが0かどうかを調べるのが...
- Excel VBAで配列の行列・縦横を入れ替える from インストラクターのネタ帳
- Excel(エクセル)のVBA(Visual Basic for Applications)では、ワークシート関数の一つTRANSPOSE関数を使うことで...
- VBAで割り算の余りを求めるMOD関数は? from インストラクターのネタ帳
- VBA(Visual Basic for Applications)では、Mod演算子を使うと、割り算の余りを求めることができます。VBAにはExcel(...
- WorksheetFunction.Dbcsとは from インストラクターのネタ帳
- WorksheetFunction.Dbcsは、ワークシート関数のJIS関数をVBAから利用するときの記述です。
- Excel VBAで最大値・最小値を求める from インストラクターのネタ帳
- Excel VBAでは、WorksheetFunction.Maxで最大値、Worksheet Function .Minで最小値を取得することができます。