Excelワークシートのセルの中から、VBAの自作関数を呼び出したいときに必要な作業。
たまにVBAをいじろうとすると、いつもやり方を忘れてしまうので、自分のための備忘録をここに記述。
どんなことができるか
標準でExcelに用意されている関数ではできない下記のような処理をブックから利用することができる。
- VBAで背景色情報を取得し、背景色データの値によって処理を変える(カレンダーやWBS等で背景色でデータを記入している場合も自動集計できようになる)
など。
VBAを使うための準備
昔と違って、そのままではVBAを利用できない。
目的のブックをマクロ有効のファイル(*.xlsm)で保存しなおす必要がある。
- VBAを利用するためには目的のブックを開いた状態で、[ファイル]-[名前をつけて保存]-[参照]でダイアログを表示し、
- ファイルの種類で Excel マクロ有効ブック(*.xlsm)を選択し、保存ボタンを押下する。
- メニューから[開発]-[Visual Basic]を選択し、VBのウィンドウを開く
- 左上部分のプロジェクトのウィンドウに目的のブックが表示され、その下に Microsoft Excel Object が、さらにその下にシートがぶら下がっているのを確認する
- Microsoft Excel Object と同じ階層に標準モジュールが存在するか確認する。
- 存在しない場合にはルートのVBAProjectを選択した後に右クリックし、[挿入]-[標準モジュール]を選択し、標準モジュールを挿入する
VBA式を追加する
- 左上部分のプロジェクトのウィンドウで、標準モジュールを選択する
- 右上のソースコードを書くウィンドウに Function hoge()~End Functionの形式で自作関数を記述する
シートから自作関数を呼び出す
- セル内に、=hoge()のように、通常の関数と同じよう形式で自作関数を呼び出す式を記述する
- 「無効な名前のエラー」が表示される場合、自作関数がExcelに見えていない、アクセスできていない。標準モジュールに記述しているか確認する