宣言 Constステートメント-図解

※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。

※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。

Const ステートメント

リテラル値の代わりに使う定数を宣言します。

  • 構文

  • [Public | Private] Const constname [As type] = expression
  • Const ステートメントの構文は、次の指定項目から構成されます。
  • 指定項目 内容

  • Public
    省略可能です。すべてのモジュール内のすべてのプロシージャから参照可能な定数を宣言するために、モジュール レベルで使用するキーワードです。プロシージャ内では、指定できません。
  • Private
    省略可能です。宣言が行われたモジュール内のプロシージャからのみ参照できる定数を宣言するときに指定するキーワードです。モジュール レベルで使用します。プロシージャ内では指定できません。
  • constname
    必ず指定します。定義する定数の名前を指定します。変数の標準的な名前付け規則に従って指定します。
  • type
    省略可能です。定数のデータ型を指定します。バイト型 (Byte)、ブール型 (Boolean)、整数型 (Integer)、長整数型 (Long)、通貨型 (Currency)、単精度浮動小数点型 (Single)、倍精度浮動小数点数型 (Double)、10 進数型 (Decimal) (現在はサポートされていません)、日付型 (Date)、文字列型 (String)、またはバリアント型 (Variant) のいずれかを指定できます。宣言する各変数に対して、As type 節を個別に指定します。
    expression
    必ず指定します。リテラル値、その他の定数、Is を除く算術演算子や論理演算子を組み合わせた式を指定します。
  • 解説

  • 既定では、定数はプライベート
    になります。プロシージャ内では、定数は常にプライベート定数として扱われて、適用範囲 (スコープ) は変更できません。標準モジュールでは、モジュール レベル定数の既定の適用範囲をキーワード Public で変更できます。一方、クラス モジュールでは、定数はプライベート定数としてのみ使用でき、キーワード Public では適用範囲を変更できません。
  • 複数の定数宣言を 1 行にまとめるには
    、定数定義をカンマ (,) で区切ります。このようにして複数の定数を 1 行で宣言した場合、キーワード Public やキーワード Private を指定すると、すべての定数定義に対してキーワードが適用されます。
  • 定数に代入する式の中では、変数、ユーザー定義関数、Chr などの Visual Basic の組込み関数は、使えません。
  • メモ

  • 定数を使うと、プログラムがわかりやすく、修正も容易になります。変数とは異なり、定数はプログラムの実行中に値を変更できません。
  • As type で定数のデータ型を明示的に宣言しない場合、代入する式の評価結果に最適なデータ型が割り当てられます。
  • Sub プロシージャ、Function プロシージャ、または Property プロシージャ内で宣言した定数は、そのプロシージャ内でのみ参照できます。プロシージャの外で宣言された定数は、宣言されたモジュール内であれば、どこからでも参照できます。定数は、式が記述できる位置であれば、どこでも使えます。

Const ステートメントの使用例

次の例では、Const ステートメントを使って、リテラル値の代わりに使われる定数を宣言しています。パブリック (Public) 定数は、クラス モジュールではなく、標準モジュールの宣言セクションに記述します。プライベート (Private) 定数は、どの種類のモジュールの宣言セクションにも記述できます。
Option Explicit

'既定の設定では、定数はプライベート (Private) です。
    Const MyVar = 459

'パブリック (Public) 定数を宣言します。
    Public Const MyString = "HELP"

'プライベートの整数型 (Integer) 定数を宣言します。
    Private Const MyInt As Integer = 5

'1行で複数の定数を宣言します。
    Const MyStr = "Hello", MyDouble As Double = 3.4567

判りやすい図解で説明

 

Module1に以下を記述した。

Module1の記述、有効範囲が示してあります。

Public Constで宣言したものはSheet1・ThisWorkbook・UserForm1・Module1・Module2・Module3が適用範囲になる。

Sheet1・ThisWorkbook・UserForm1・Module1・Module2・Module3から参照したPublic Const~Stringは全て可能

Private Constやプロシージャ内のConst~StringはSheet1・ThisWorkbook・UserForm1・Module2・Module3では参照出来ない。

プロシージャ内のConst~StringはModule1のModule1test1の範囲だけ有効、Module1test2では参照出来ない。

 

 

2000年01月01日|[VBサンプルコード]:[宣言]