Vba 変数について知っておくべきことすべて

変数VBA

VBA では、変数はそれ自体がシステムに保存されるストレージ ボックスのようなものですが、変数はそこに値を保存でき、その値をコードで使用し、必要に応じてその値を変更できます (名前が示すように、「変数」) 」は価値が固定されていないものです)。

変数を宣言するには、次の簡単な手順に従う必要があります。

  1. 最初に「Dim」というキーワードを使用します。
  2. 変数の名前を指定します。
  3. 名前の後にキーワード「As」を使用します。
  4. 割り当てたい値に基づいて変数の「データ型」を指定します。

ここでは名前「startDate」を使用し、データ型「Date」を指定しました。変数を宣言した後、その変数に値を割り当てることができます。

 Dim startDate As Date startDate = “11/10/2018”

これで、コード内で開始日を使用するたびに、Excel では指定された日付が使用されます。

データ型

VBA では、データ型は基本的に、変数または定数に値を格納するときに指定する必要があるデータ型です。たとえば、日付を変数に格納する場合は、まずその日付変数をデータ型として宣言する必要があります。

データ型の説明

VBA で使用できるデータ型の完全なリストを次に示します。

データ・タイプ
使用バイト数
値の範囲
バイト
1バイト
0~255
ブール値
2バイト
正しいか間違っているか
全体
2バイト
-32.768 ~ 32.767
Long (長整数)
4バイト
-2,147,483,648 ~ 2,147,483,647
一人で
4バイト
負の値の場合は -3.402823E38 ~ -1.401298E-45。正の値の場合は 1.401298E-45 ~ 3.402823E38
ダブル
8バイト
負の値の場合は -1.79769313486231E308 ~ -4.94065645841247E-324。正の値の場合は 4.94065645841247E-324 ~ 1.79769313486232E308
現金
8バイト
-922,337,203,685,477.5808 ~ 922,337,203,685,477.5807
10進数
14バイト
+/-79 228 162 514 264 337 593 543 950 335 小数点なし。 +/-7.9228162514264337593543950335 (小数点以下 28 桁)
日付
8バイト
100年1月1日から9999年12月31日まで
物体
4バイト
任意のオブジェクト参照
チェーン(長さ可変)
10バイト + 文字列長
0~20億程度
チェーン(固定長)
チェーンの長さ
1~約65,400
バリアント (数字付き)
16バイト
Double の範囲までの任意の数値
バリエーション(文字あり)
22バイト+文字列長
可変長文字列と同じ範囲
ユーザー定義の
様々な
各要素の範囲は、そのデータ型の範囲と同じです。

これは、変数と定数のデータ型を宣言する場合に強くお勧めします。

変数または定数のデータ型を指定すると、データの有効性が保証され、無効なデータ型の入力が防止されます。データ型を省略すると、VBA は変数にバリアント データ型を適用します。これが最も柔軟であり、VBA はデータ型が何であるべきかを推測しません。

ヒント:データ型の指定を省略しない最善の方法は、コードを開始する前にモジュールの最上部で明示的なオプションを使用することです。

明示的または暗黙的に

変数は明示的または暗黙的に宣言できます。明示的な宣言とは、変数に値を割り当てる前に、変数を宣言してその値を設定することを意味します。これの利点は、定義すると、そのデータ型 VBA が常にその形式でデータを保存することです。

以下に例を示します。

 Dim myDate As Date

したがって、この VBA に値を保存すると、常に日付形式が適用されます。ただし、暗黙的な宣言を使用すると、この明示的な宣言ステートメントを煩わす必要はありません。代わりに、変数の値を設定し、それをコード ステートメントで使用します。暗黙的な宣言では、型が指定されていないため、VBA はデータを Variant 変数型に格納します。

言い換えれば、宣言せずにコード内で変数を使用するだけの場合、それは暗黙的になります。以下は暗黙的な宣言の例です。

 myDate = “11/10/1990”

このようにして、値を変数に代入し、それをコード ステートメントで使用することができます。私に言わせれば、常に、つまり変数を使用する前に宣言する方が良いということです。これは良い習慣であるだけでなく、コードの実行が速くなり、理解しやすくなります。

静的変数

さて、変数は値を変更できる場所だと言いましたが、これは違います。通常の変数では、プロシージャが完了すると、変数に格納された値は VBA のメモリから削除されますが、この値を失いたくない場合は、この変数を静的にすることができます。

変数を静的にして値を保持するには、「Dim」を使用する代わりに「Static」キーワードを使用します。

変数に名前を付ける

変数には任意の名前を付けることができます (これらのルールは定数とプロシージャ名にも適用されます)。ただし、いくつかのルールに従う必要があります。

  • アルファベット、数字、および一部の句読点を使用できますが、名前の最初の文字はアルファベットである必要があります。
  • スペースやピリオドは名前に使用できる文字ではありませんが、アンダースコアを使用すると名前を読みやすくすることができます。
  • 名前に特殊文字を使用することはできません。
  • 名前の長さは 254 文字までですが、意味のない名前を使用します。
  • 名前に使用できない単語である予約語が多数あります。これらの単語のいずれかを使用しようとすると、エラー メッセージが表示されます。
  • VBA は大文字と小文字を区別しません。

範囲

この時点で、プロシージャと、どのプロシージャがどの状況で役立つかがわかり、変数とそのデータ型を定義する方法についても学びます。

次に重要なことは、スコープ、つまり可用性を理解することです。ここで使用できます。変数を定義するとき、スコープはその変数をホスト プロシージャの外部で使用できるかどうかを定義します。変数のスコープを定義するには 3 つの方法があります (定数、およびプロシージャ全体で均等)。

  1. プロシージャ レベル:変数は、宣言したのと同じプロシージャ内でのみ使用できます。
  2. モジュール レベル (プライベート):モジュール内のすべてのプロシージャから変数にアクセスできるようにします。
  3. モジュール レベル (パブリック):すべてのモジュールのすべてのプロシージャから変数にアクセスできるようにします。

変数のデフォルトのスコープは、この変数が宣言されているプロシージャ (プロシージャ レベル) です。

しかし、現実世界の話をさせてください。

私はコワーキングスペースで仕事をしていますが、私が座っている場所は3階建てのビルの1階です。ほぼ毎日同じ席に座っています。したがって、プロシージャ レベルのスコープで変数を宣言した場合、その変数は同じプロシージャ内でのみ使用できます。私が毎日同じフロアの同じ席に座っているのと同じです。でも、もっと言っておきますが、私は1階に座っていますが、他の階のどの席でも利用できます。また、以下のスナップショットでは、プロシージャを開始する前に Private キーワードを使用してモジュールの先頭で変数「myName」を宣言し、それを 3 つのコードすべてで使用しました。このモジュールは、さまざまなフロア (プロシージャ) がある建物と考えてください。モジュールの先頭で変数をすでに宣言しているため、このモジュールのどのプロシージャでも使用できます。これはプライベート モジュール レベルのスコープと呼ばれます。さて、これが最後のことです。私のオフィスは全国のさまざまな都市に支店があり、そこに行けば、それらのオフィスに行って、必要に応じてどの席でも使用できます。したがって、ワークブックにさまざまなモジュールがある場合、1 つの変数を Public として宣言することで、これらすべてのモジュールで使用できます。

VBAとは

関連するチュートリアル

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です