第2回和風スパゲティ勉強会 列挙型変数Enumの使い方を受けて

VBAでの操作

blueです。

今回の「列挙型変数Enumの使い方」で学んだ内容をもとに、勉強になった部分をまとめました。自分の備忘録としてだけでなく、他の方にも役立つ情報になればと思います。

@YUExcelMARUさん、@KotorinChunChunさんも書かれておられるように、あくまで私の備忘録的なものです。他への転用は禁じますし、登壇者の方も問題あれば削除いたしますのでお教えください。 @wafu_spaghettiさん、ありがとうございました!

スポンサーリンク

Enumとは(基本構文と特徴)

  • 定義: Enum (列挙型) は、関連する定数をまとめて定義するための機能。
  • 構文: Enum 列挙型名 ~ End Enum で定義する。
  • データ型: 既定では Long 型 (整数型) が割り当てられる。
  • 連番: Enum 内の各要素には、デフォルトで 0 から始まる連番が自動的に割り振られる。

Enumの利用場面

  • プログラム内で意味のある名前を付けた定数を複数扱う場合に適している。
  • 特に、ワークシートの列番号のように、意味のある連番を扱う場合に有用。

Enumの作成方法

  • 構文: Enum 列挙型名 ~ End Enum で記載する。
  • 要素記載方法:ワークシートの列をコピー、「行と列を入れ替える」で貼り付けたものをVBAに貼り付け、インデントで調整する
  • 初期値: 最初の要素に初期値を明示的に指定することで、連番の開始番号を調整できる。
  • 取得方法: Enum名.要素名 で、対応する番号を取得できる。
  • 例:
Enum e顧客情報
    顧客ID = 1 '顧客IDは1から始まる
    顧客名
    住所
    電話番号
End Enum

Enumのメリット

  • 可読性の向上: マジックナンバー(意味不明な数値)を避け、コードの意図を明確にできる。

変更前

変更後

  • メンテナンス性の向上:列の追加・削除時に、Enum の定義を変更するだけで、関連するコード全体を修正する必要がない。マジックナンバーのように、一つずつ数値をずらす手間が不要になる。
  • ミスの削減:インテリセンス機能により、要素名を簡単に入力できるため、入力ミスを減らせる。
  • 複数シートで同じような処理をする場合、Enumを共有することで、シート間の整合性を保ちやすくなる。

Enum利用テクニック

  • 接頭辞: Enum 変数名に e や C (Column の略) などの接頭辞をつけることで、Enum であることを明示する。
  • First/Last 要素: Enum の最初と最後の要素を First と Last で定義することで、範囲指定を容易にする。

ワークシートオブジェクトの簡易化

  • シートオブジェクト名: VBAエディタのプロパティウィンドウで、シートのオブジェクト名を設定しておくと、Dim 宣言や Set ステートメントを省略できる。

マジックナンバーの排除

  • 定数化: 特定の行番号やセル番地は、Public Const を使用して定数として定義する。
  • Enum と定数の組み合わせ: 列番号を Enum で定義し、行番号を定数で定義することで、コード全体の可読性と保守性を向上させる。
  • 別モジュールでの管理:Enumや定数はPublicとして別モジュールで管理するとよい

Excelでのコード作成

  • 文字列操作関数: Substitute 関数などの文字列操作関数を使用することで、Excel 上でコードの雛形を作成し、VBA エディタにコピー&ペーストできる。
  • 注意点: 関数名や変数名など、VBA の構文規則に沿った形式でコードを作成する必要がある。

まとめ

  • Enum は、VBA コードの可読性、保守性、および信頼性を向上させるための強力なツール。
  • ワークシートオブジェクト名や定数を活用することで、さらに簡潔で効率的なコードを作成できる。

私が書いた書籍です。VBAで培ったWebAPIの知識を基に作成しました。
Google AppSheetGAS生成AIを初めて使う人向けに書いています。ぜひ手に取って見てください。

コメント

タイトルとURLをコピーしました