定数
定数は大きく分けて組み込み定数とユーザー定義定数と呼ばれるものがあります。
組み込み定数とはVBAに最初から用意されている定数です。
組み込み定数の中でも種類があり、「 xl 」で始まるものと「 vb 」で始まるものがあります。
これは組み込み定数がどこで用意されたものなのかを表しています。
Excel VBAで用意された定数が「 xl 」で始まり、Visual Basicで用意されたものは「 vb 」で始まります。
また、ユーザーフォームのコントロールで使われる定数に「 fm 」で始まる定数もあります。
組み込み定数の例をいくつか紹介します。
<組み込み定数>
はい | vbYes |
いいえ | vbNo |
OK | vbOK |
キャンセル | vbCancel |
中止 | vbAbort |
再試行 | vbRetry |
以上のようなものが組み込み定数になります。他にもいろいろなものがありますが、基本は上にも書いたように「 vb 」か「 xl 」または「 fm 」で始まるものを言います。
次に2つ目のユーザー定義定数について説明します。
ユーザー定義定数は組み込み定数のように用意されているものではなく、「自分自身で作った定数」のことをいいます。定数を定義するためには「Const」を使って宣言する必要があります。
定数の宣言には2つの方法があります。
Const 変数名 = 値
Const 変数名 As 型 = 値
定数を定義するということは指定した数値や文字列など値に名前を付けて、マクロ作成の中で一度定義したら絶対に変更がきかないようにすることです。
仕組みとしては変数とよく似ています。定数も変数名のように値に名前を付けることができます。
また、定数で書いた内容を変数として書くことも可能です。
実際に定数を宣言して使ってみましょう。
今回は消費税を求めるコードを作成します。
まずエクセルのSheet1に下の画像と同じ文字を設定してください。
入力できたら次に進みます。
VBEを起動します。
定数はVBEのコードウィンドウで宣言します。
エクセルを開いて、[ ツール ] ⇒ [ マクロ ] ⇒ [ Visual Basic Editor ] を起動します。
VBEのSheet1にコードを書き込んでいきます。
コードウィンドウの1行目で定数の宣言を行います。
Const 変数名 As 型 = 値
定数の宣言は上の形式を使います。
定数の宣言は「Const」を使います。
1行目で宣言したものはプロシージャの外で宣言したものとして扱われます。
あとから変更を行うものはこの部分で宣言を行いましょう。
サブプロシージャで内容を書き込みます。
プロシージャの中で宣言を行います。
ここで宣言したものはこのプロシージャの中のみで有効です。
では内容の続きを書いていきます。
セルの位置と入力する値を書き込みます。
Cell( , )は行と列の番号を表しています。「Cells(2,1) 2行目の1列目にあるセル」
これでコードは完成です。
エクセルシートを見ながら実行してみましょう。
サブプロシージャで作成した内容が記入されました。
定数の変更
定数とは数値や文字列などに名前を付けるものであると説明しました。
名前を付けただけで対象の文字列や数値を変更しているわけではないので、定数の中身を入れ替えることも可能です。
これが定数の便利な部分です。
中身を入れ替えられる?便利?これだけではまだよくわかりませんよね。
今回例にした消費税は現在5%ですが、将来変更されるかもしれない値です。
もし定数にした内容が変更された場合、今まで設定してきた定数を全て変更しなければならなくなります。
今回はサブプロシージャが1つしかありませんでしたが、これが何百・何千というデータの場合1つ1つ手作業で直すのは大変ですね。
そのとき、注目するのは1番上で定義した定数です。
この赤枠のコードはモジュール全体に効果を発揮します。
サブプロシージャがいくつあっても、消費税という定数を使えば全てに0.05がかかります。
つまり一番上の定数の中身を変更することにより、それ以下のサブプロシージャの定数全ての値が変更されます。
これによりマクロの書き換えがとても楽になりますね。