_基本

【VBA入門】Staticステートメント/静的変数

プログラムを勉強し始めると「変数」を知ります。
今までに感じた事のない概念で、最初は戸惑と考えます。

基本的には DimPublic だけ理解すれば問題ありません。
【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での定数宣言と定数一覧

コメント

タイトルとURLをコピーしました