【EXCEL VBA】プロシージャが終了しても値を保持し続ける”静的変数”を使う Staticステートメント

スポンサーリンク

はじめに

ひらちんです。

通常、変数はプロシージャの実行が終了すると値が消えてしまいます。

前回実行時に算出した値を保持しておきたいときは、VBAだと値保持用のセルに入力しておいたりすることも多いんではないでしょうか?

今回紹介するStaticステートメントは、プロシージャの実行が終了した後も値を消さずに保持してくれる変数です。

こいつを使うことで、シート上に値を保持しなくても次の実行のときにその値を使うことが出来るようになります。

スポンサーリンク

Staticステートメント

構文

Static 変数名 As 型名

Dimなどの変数と同じように宣言するだけです。

次のコードを実行することで確認してみましょう!

Sub sample()

    ' 変数をStaticで宣言する
    Static tmp As Long
    
    '1足す
    tmp = tmp + 1
    
    'イミディエイトウィンドウに現在の値を表示
    Debug.Print tmp
    
    '終了コメント
    Debug.Print "処理完了"
    
End Sub

単純に、Staticステートメントで変数を宣言して、実行するたびに1を足すというコードです。

変数をDimで宣言していたとしたら、何回実行しても表示は「1」ですが、Staticで宣言することによって、プロシージャ終了後も値を保持しているため、保持している値に1が足されるのでどんどん数値が増えていきます。

Staticステートメントの値が初期化されるのは以下の場合です。

  • 対象のエクセルファイルを閉じる
  • Endステートメントで処理を終了する
  • 「tmp=0」のように代入し直す

ちなみに、Staticステートメントは宣言したプロシージャ内でしか使用出来ないので注意してください。

コメント

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