プログラムを勉強し始めると「変数」を知ります。
今までに感じた事のない概念で、最初は戸惑と考えます。
基本的には Dim と Public だけ理解すれば問題ありません。
【VBA入門】変数の適用範囲(スコープ)Dim/Public
今回は静的変数と呼ばれる変数をご紹介します。
Staticステートメント/静的変数
プロシージャを終了しても、変数の値を保存しておきたい。
Publicな変数にすると、管理が大変だからしたくない。
仕方なく、ワークシートのセルに、仮の値として保存しておく。
(しかしユーザーの目につくところには出したくない・・・シートを隠しシートにする、非表示にする)
上記の知識でプログラムを組むと、少し不格好ですね。
シンプルなプログラムとは言えなくなります。極力シンプルなプログラムを組むことが上達の秘訣です。
上記を解決するのがStaticステートメントです。
Static変数だとプロシージャを終了しても、値を保存します。
Staticステートメント/静的変数のサンプルコード
プロシージャ内にStatic i As Long のように宣言する。
'■Static変数の使い方 Sub test_Static() '■DimではなくStaticで宣言する Static i As Long i = i + 1 MsgBox i '1回目は1 '2回目は2 '3回目は3と値が増えていく End Sub
静的変数の値の初期化(クリア)
静的変数の初期化は以下です。基本的にはPublic変数と同様です。
- 対象のファイルを一度閉じる
- Endステートメントで処理を終了する
- 単純に i = 0 のように代入しなおす
注意点
Static ステートメント/静的変数は宣言したプロシージャ内でしか使用できません。
Public ステートメントのように、プロシージャ外に記載は出来ません。
Static i As Long Sub test_Static() i = i + 1 MsgBox i '実行時にコンパイルエラーが発生します '「プロシージャの外では無効です。」 End Sub
関連記事
【VBA基本】変数のデータ型一覧
【VBA入門】変数の適用範囲(スコープ)Dim/Public
変数ではなく、定数もうまく利用し業務効率化しましょう。
【VBA基本】Constでの定数宣言と定数一覧
コメント