静的変数/Staticステートメントについて
保持したい値はシートに入れちゃうので
今まで静的変数を使わなかったのですが、
ここいらで使えるところは使えるようになりたいですね。
まずは、静的変数とは?
というところからです。
静的変数とは、
プロシージャレベルで使用し
プログラムが実行されている間だけ値が保持される変数。
モジュールがリセットされるか再実行されるまで、保持される。
と、このようにVBAヘルプの説明にあります。
静的変数を宣言するにはStaticステートメントを使います。
例えば次のようにする。
Static a As Integer
Static str As String
Static a(10) As Integer
最後の例のように配列も使えます。
文字だけでは実感として理解できないので試行します。
Sub macro110522a() Static a As
Integer |
上のコードを一回実行すると a = 1
2回目を実行すると a = 2
3回目を実行すると a = 3
…
のように、
プロシージャが終了しても静的変数 a の値は保持されます。
ウォッチウィンドウに静的変数aをいれて見ていたのですが
プロシージャが実行されている間だけ値が表示されていました。
プロシージャレベルというところがミソですね。
静的変数を宣言したプロシージャ以外では使えないということです。
昨日の今日ですが、
静的変数を使用して
解除可能なOnTimeメソッドの使用方法を作ってみます。
前回は実行と解除を別の関数とプロシージャでしましたが、
今回はこれらを1つの関数でできるようにします。
Sub OnTimeFunc2(d As Date, Optional mName As String) Static d2 As Date Sub macro110522b() Sub macro110522c()
|
静的変数は値が保持される代わりに、
最初に割り当てられたメモリが
プロシージャの終了後も開放されないので
必要以外は使わないほうがよいようです。
| 固定リンク
この記事へのコメントは終了しました。

コメント