.net column
.NET開発者のためのブログメディア

VBA Enumとは?VBA Enum(列挙型)の宣言の仕方・変数

2021年04月12日

SE
VBA Enumをどう使えばいいのか悩んでいます。

PM
では、VBA Enumについて基本から見ていきましょう。

VBA Enumとは?


VBAのEnumとは、Long型のConst定数に名前を付けて、それらをひとまとめにして参照しやすくしたものです。

例えば、色データとして赤=1、緑=2、青=3と番号を付け、これらの数値を直接VBAのコードに記述したとします。

これでも問題なく動作しますが、色データを変更する必要が出てきた時に、ひとつひとつすべてを変更するのは大変ですし、視認性もよくありません。このようなときに使用するのがEnum(列挙型)です。

Enum(列挙型)を使って定数を定義すると、数値を直接指定する代わりに定義した名前で指定できます。

また、意味のある名前を付けることでVBAプログラム(マクロ)の可読性も向上します。結果として、開発スピードの向上にも繋がります。

VBA Enum(列挙型)の宣言の仕方

VBA Enum(列挙型)の宣言の仕方は下のようになります。

「名前」には、列挙型の名前を付けます。この「名前」を使って変数を宣言できるようになります。

「メンバ名」は、任意の定数式(定数値)に付ける名前です。自分だけが分かる名前にしても良いですが、できれば他人が見ても分かりやすい名前を付けた方が良いでしょう。

「定数式」は、任意の定数値を指定します。この「定数式」を省略しますと「直前の値+1」(通し番号)が割り当てられます。

VBA Enum(列挙型)変数

VBAでEnum(列挙型)を宣言すると、それを使って変数を宣言できるようになります。

列挙型変数は、Long型変数なので色々な整数値を入れられますが、基本的には定義されたメンバの値のみ代入するようにした方が良いでしょう。

下のサンプルプログラム(Sample1)は色データ列挙型(colorIndex)を宣言し、それを使って宣言した変数ciに色データenmGreenを代入してイミディエイトウィンドウに値を出力しているものです。

ここでは、変数ciにenmGreenを代入していますので、結果は【ci = 2】と表示されます。

VBA Enum(列挙型)メンバへのアクセス方法

VBAのEnum(列挙型)で宣言されたメンバにアクセスするには、上の項目でご紹介した変数を宣言する方法以外に、「名前.メンバ名」と記述してもアクセスが可能です。

下のサンプルプログラム(Sample2)は色データ列挙型(colorIndex)を宣言し、普通にLong型で宣言した変数lngに色データenmBlueを代入してイミディエイトウィンドウに値を出力しているものです。

ここでは、変数lngにenmBlueを代入していますので、結果は【lng = 3】と表示されます。

PrivateとPublicの違い

VBAにおいて、Privateで宣言したEnum(列挙型)は、宣言したモジュール内でのみ使用できます。それに対し、Publicで宣言したEnum(列挙型)はプロジェクト全体で使用できます。

VBAプログラム(マクロ)が比較的小さいうちは良いのですが、ある程度大きくなってくると、機能別にモジュールを分けて記述することが多くなります。

そのような時、そのモジュール内だけで参照できればよいEnum(列挙型)はPrivateで宣言し、すべてのモジュールで参照したいEnum(列挙型)はPublicで宣言するなどの使い分けができます。

VBA Enum(列挙型)の使い方


VBAのEnum(列挙型)の代表的な使い方として、Excelのセル(列)の指定があります。

列のデータは項目を増やしたり減らしたりする可能性がありますので、Enum(列挙型)を使って定義しておくと、後の修正が楽にできます。

例えば、列の項目に個人情報の「名前」「年齢」「身長」「体重」を設け、2行目にデータを設定するマクロを記述することを考えます。

これをプログラミングすると、以下に記載するサンプルプログラム(Sample3_1)のようになります。

そこへ「性別」という項目を新たに追加すると、サンプルプログラム(Sample3_2)のようになります。

Enum(列挙型)を用いることで、必要な項目を単純に追加するだけで簡単に修正できることが分かるでしょう。

サンプルプログラム Sample3_1

Excel VBAの個人情報登録サンプルプログラムの雛形です。

サンプルプログラム Sample3_2

Excel VBAの個人情報登録サンプルプログラムの雛形に、「性別」を追加したプログラムです。

SE
子要素を使えば値の追加もできるのは便利ですね。

PM
列管理ができるのも大きな特徴ですね。

VBAのEnum(列挙型)は上手に使えばとても便利な機能!

VBAのEnum(列挙型)は、上手に使えばとても便利な機能です。また、他の言語(C++、C#、Pythonなど)にも同様な機能がありますので、ぜひ覚えて使用してみてください。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags

Jobs