MS_ExcelVBA - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

Excel VBA

概要

  • Excel マクロとも呼ばれる。
  • マクロと言うが、画面も追加可能。
  • VBA は VB.NET ではなく、旧 VB6 系を使用して書く。
  • 以下のような機能を実装可能
    • オートメーション
    • ユーザー定義関数
    • 画面の作成
    • アドイン

詳細

オートメーション

Excel のオブジェクト モデル(Application / Workbook / Worksheet / Range)を
コードから操作すること。他の Office アプリを操作することもできる。

※ 注意:Office サーバー サイド オートメーション

補足(オートメーションの実務上の注意):

  • Select / Activate を使わない
    マクロ記録が生成するコードは Range.SelectSelection.~ の形になるが、
    Range を直接操作する方が速く、画面のアクティブ状態にも依存しない。
  • セルへのアクセスをまとめる
    セル 1 つずつのループは非常に遅い。Range を配列(Variant)に一括で読み込み、
    配列上で処理してから一括で書き戻すのが定石。
  • Application.ScreenUpdating = False
    再描画を止めるだけで大きく速くなる(処理後に必ず True へ戻す)。

ユーザー定義関数

標準モジュールに Function を書くと、ワークシート上の数式から呼び出せる。

補足: ワークシート関数として呼ばれた場合、
自セル以外のセルの値を書き換えることはできない(変更は無視される)。
副作用を伴う処理は、ユーザー定義関数ではなく
オートメーションとして実装する。
なお、数式だけでユーザー定義関数を作る LAMBDA 関数
Microsoft 365 の Excel に追加されており、
簡単なものは VBA を使わずに済むようになっている。

画面の作成

ユーザーフォーム(UserForm)により、VB6 的な入力画面を D&D で作成できる。

アドイン

参考

本 Wiki 内


Tags: Microsoft Office, Excel, Visual Basic

⚠️ **GitHub.com Fallback** ⚠️