ワークシートではSUM関数やPRODUCT関数など頻繁に使う関数があります。
これをVBA上で使いたい時があるかと思います。
そして、VBA上でもワークシート関数を用いる方法があります。
本記事ではそんなVBA上でワークシート関数を使う方法について解説していきます。
開発効率よくしたり、可読性を上げることができたりするので、ぜひ覚えていってください。
VBA上でワークシート関数を使う方法
ここではワークシート関数を使うために必要な『WorksheetFunctionクラス』『Evaluateメソッド』の2つの記述について解説します。
ワークシート関数が使える『WorksheetFunctionクラス』
多くのワークシート関数は『WorksheetFunctionクラス』のメソッドに用意されています。
そのWorksheetFunctionクラスでワークシート関数を使うための記述は下の通りです。
Application.WorksheetFunction.[エクセル関数名]
上の記述でワークシート関数を指定する場合は”頭文字は大文字、それ以降は小文字(例:SUM→Sum ,SUMIF→SumIf)”にします。
例えば、下の表でSUM関数を使ったコードで説明します。
ここでは「セルC8に5年間の売上高の合計を計算する」という内容で行います。
ワークシート上でのSUM関数の記述は下の通りです。
そして、上と同様の処理をVBA上で行う場合は下のような記述になります。
1 2 3 4 5 |
Sub sample1() Range("C8") = Application.WorksheetFunction.Sum(Range("C3:C7")) End Sub |
上のシート上での記述式とVBA上での記述式は若干違いがあります。
また、四捨五入するROUND関数などでは、処理に若干違いがあるので、記述の仕方・処理の仕方は慣れるまで、ネットなどで調べながら使ってみてください。
上を実行すると下のような結果になります。
WorksheetFunctionにない場合は『Evaluateメソッド』
そして、上の「WorksheetFunctionクラス」のメンバに自分の使いたいワークシート関数が表示されない場合は用意されていないということになります。
そんなときには『Evaluateメソッド』を使います。
Application.Evaluate(“[エクセル関数名]”)
この『Evaluateメソッド』でエクセル関数を使う場合は”すべて大文字”で関数名を記述します。
では、WorksheetFunctionクラスに用意されていない『CODE関数』を使って、文字のJISコードを取得してみます。
1 2 3 4 5 |
Sub sample6() Debug.Print Application.Evaluate("CODE(""あ"")") End Sub |
注意Evaluateメソッドの”引数は文字列形式で指定”します。※「”(ダブルクォーテーション)」で囲む必要がある。
そして、CODE関数のように引数を文字列形式で指定する場合などは上のコードのように「”(ダブルクォーテーション)を二重に囲む」必要があったりします。
1位 | 2位 | 3位 |
---|---|---|
Excel VBA 脱初心者のための集中講座 | パーフェクトExcel VBA | ExcelVBA 実戦のための技術 |
初心者~中級者 | 中級者 | 初心者~中級者 |
【初心者が手に取るべき参考書】 ・「書籍+動画」で圧倒的に理解しやすい入門書になっている。 ・丁寧で詳しい解説でボリューム感がある。 | 【より深い理解をしたい方にお勧めな参考書】 ・テーマに対して丁寧な解説・適度な深さで解説されている。 ・幅広くテーマを扱っていることから、基礎知識をあらかた網羅できる。 | 【入門書と一緒に買うべき参考書】 ・1つ1つのテーマを経験豊富なエンジニア視点で解説してくれている。 ・実践的で効果的なコードの書き方が理解できる。 |
【読んでみた一言】 正直、入門書はコレ一冊でいいかも。あとは中級者用の参考書に進むべし。 | 【読んでみた一言】 深く書かれているが、少々専門的に書かれていることから、読む前に数冊の入門書を読破したほうが良い。 | 【読んでみた一言】 基礎知識を持っている人が次のレベルに達するきっかけを与えてくれる参考書である。 |
スポンサーリンク