Constステートメント
こちらでは、VBAのIE(InternetExplorer)操作に利用されたConstステートメントの解説になります。
ステートメントとは、「命令文」と訳されるように、コンピュータに具体的な動作を指定する最小単位のプログラムです。主にマクロの挙動を制御する構文や文法を指します。通常は1行で完結する部分を指しますが、If~Thenなど複数行にまたがる部分を意味することもあります。
目次
Constステートメントとは
Constステートメントは、リテラル値の代わりに使う定数を宣言します。
Const 定数名 As データ型 = 値
構文 | [Public | Private] Const constname [As type] = expression | |
---|---|---|
キーワード | 省略 | 説明 |
Public | ● | すべてのモジュール内のすべてのプロシージャから参照可能な定数を宣言するために、モジュール レベルで使用するキーワードです。プロシージャ内では、指定できません。 |
Private | ● | 省略可能です。宣言が行われたモジュール内のプロシージャからのみ参照できる定数を宣言するときに指定するキーワードです。モジュール レベルで使用します。プロシージャ内では指定できません。 |
constname | × | 必ず指定します。定義する定数の名前を指定します。変数の標準的な名前付け規則に従って指定します。 |
type | ● | 定数のデータ型を指定します。As type節は宣言する各定数に対して個別に指定します。 |
expression | × | 必ず指定します。リテラル値、その他の定数、Is を除く算術演算子や論理演算子を組み合わせた式を指定します。 |
既定では、定数はプライベートになります。プロシージャ内では、定数は常にプライベート定数として扱われて、適用範囲 (スコープ) は変更できません。標準モジュールでは、モジュール レベル定数の既定の適用範囲をキーワード Public で変更できます。一方、クラス モジュールでは、定数はプライベート定数としてのみ使用でき、キーワード Public では適用範囲を変更できません。
複数の定数宣言を 1 行にまとめるには、定数定義をカンマ (,) で区切ります。このようにして複数の定数を 1 行で宣言した場合、キーワード Public やキーワード Private を指定すると、すべての定数定義に対してキーワードが適用されます。
定数に代入する式の中では、変数、ユーザー定義関数、Chr などの Visual Basic の組込み関数は、使えません。
定数を使うと、プログラムがわかりやすく、修正も容易になります。変数とは異なり、定数はプログラムの実行中に値を変更できません。
As type で定数のデータ型を明示的に宣言しない場合、代入する式の評価結果に最適なデータ型が割り当てられます。
Sub プロシージャ、Function プロシージャ、または Property プロシージャ内で宣言した定数は、そのプロシージャ内でのみ参照できます。プロシージャの外で宣言された定数は、宣言されたモジュール内であれば、どこからでも参照できます。定数は、式が記述できる位置であれば、どこでも使えます。
定数のデータ型
指定方法 | データ型 | バイト数 | 値の範囲 |
---|---|---|---|
Byte | バイト型 | 1 | 0~255 |
Boolean | ブーリアン型 | 2 | 真(True)又は偽(False) |
Integer | 整数型 | 2 | -32,768~32,767 |
Long | 長整数型 | 4 | -2,147,483,648~2,147,483,647 |
Currency | 通貨型 | 8 | -922,337,203,685,477.5808~922,337,203,685,477.5807 |
Single | 単精度浮動小数点数型 | 4 | -3.402823E38~-1.401298E-45(負の数) 1.401298E-45~3.402823E38(正の数) |
Double | 倍精度浮動小数点数型 | 8 | -1.7976931348623E308~-4.94065645841247E-324(負の数) 4.94065645841247E-324~1.79769313486232E308(正の数) |
Date | 日付型 | 8 | 西暦100年1月1日~西暦9999年12月31日 |
Object | オブジェクト型 | 4 | オブジェクトを参照するためのアドレス |
String | 文字列型 | 10+文字列の長さ | 0~2GB |
Variant | バリアント型 | 16 | 倍精度浮動小数点数型の範囲と同じ |
Variant | バリアント型 | 22バイト+文字列の長さ | 可変長の文字列型の範囲と同じ。 |
定数の命名規則
定数の名前は基本的に自由に命名できますが、いくつかの命名ルールがあります。定数名を命名する際は以下に注意しましょう。
- 使用できる文字は、英字、ひらがな、全角カタカナ、漢字、数字、アンダースコア(_)
- 先頭は文字でなければならない(数字または記号以外の文字)
- 記号やスペースは使用できない
- 定数名は半角255文字(全角127文字)以内にする
- Excelの関数、ステートメント、メソッドと同じ名前(予約語)を使用することは出来ない
- 同一の適用範囲内で同じ名前の定数を宣言することはできない
定数の適用範囲
定数も変数の適用範囲(スコープ)と同様に適用範囲があります。定数で利用できるキーワードは「Private」と「Public」の2種類になります。キーワードはConstステートメントの先頭に記述することで利用できます。それでは、それぞれどのように処理されるか確認してみましょう。
キーワードPrivate
Module1
Private Const TAX As Single = 0.08
Sub sampleA()
MsgBox "みかんの消費税は" & 100 * TAX & "円
End Sub
Module2
Sub sampleB()
MsgBox "ばななの消費税は" & 200 * TAX & "円
End Sub
Module2のsampleBプロシージャを実行した結果です。
キーワードPrivateで宣言した定数はモジュール内のみで有効となります。Module2のsampleBプロシージャは他のモジュールですので、sampleBプロシージャを実行するとエラーは起こりませんが、TAXは変数扱いで0となってしまいます。よって計算結果は「0円」となります。
尚、定数の既定値はキーワードPrivateですので、キーワードを記述しない場合は常にキーワードPrivateが適用されます。
キーワードPublic
Module1
Public Const TAX As Single = 0.08
Sub sampleA()
MsgBox "みかんの消費税は" & 100 * TAX & "円
End Sub
Module2
Sub sampleB()
MsgBox "ばななの消費税は" & 200 * TAX & "円
End Sub
Module2のsampleBプロシージャを実行した結果です。
キーワードPublicで宣言した定数はすべてのモジュール内で有効となります。ですので、Module2のsampleBプロシージャを実行するとTAXは定数TAX扱いとなり、0.08が代入され、計算結果は「16円」となります。
定数のデータ型を設定して消費税を計算するサンプルコード
Sub sample()
Const TAX As Single = 0.08
MsgBox "みかんの消費税は" & 100 * TAX & "円"
End Sub
実行結果
解説
例えば、定数TAXに消費税の8%を設定する場合は以下になります。8%は0.08ですので、小数点に対応した単精度浮動小数点数型(Single)で宣言しています。定数名は一般的に、すべて大文字で記述するのが慣例となっていますので、こちらでも大文字で記述します。
事例を確認するとみかん100円に対して定数TAXである0.08を乗算しています。
sampleのSubステートメントは引数の設定なしです。次にConstステートメントを利用してn,s(0)~s(3),str1の定数を宣言しています。それぞれ、定数nには整数型(Integer)の「3」、定数sには整数型(Integer)の「1~4」、定数str1には文字列型(String)の"足し算:"を設定しています。
そしてDebugオブジェクトのPrintメソッドで定数を結合・足し算させ、「足し算:5」を表示させます。
最後はEndステートメントを利用してsampleプロシージャを終了させます。
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。