「もう一度やってみたいけど、前回の続きから再開するのが大変そう」と思ったことはありませんか?
そんな時に役立つのが、VBAのStaticステートメントです。これを使うことで、プログラムが一度実行された時の値を保持し、再度実行した際にも同じ値を利用することができます。
これにより、再開がスムーズになるだけでなく、プログラムの実行も効率的になるのです。
今回は、VBAのStaticステートメントについて、詳しく紹介していきます。
Staticステートメントの概要
Staticステートメントは、関数やサブルーチン内で利用される変数に付けることができる修飾子の一つです。Staticステートメントを付けると、その変数は静的変数となり、値が保持されるようになります。
例えば、ある関数内で繰り返し処理を行っている場合、通常の変数を使っていると、繰り返し処理が終わった時点で変数の値は初期化されてしまいます。しかし、Staticステートメントを付けた変数を使うことで、値を保持し続けることができます。
Staticステートメントは以下のように使います。
1 2 3 4 5 |
Sub sample() Static count As Integer count = count + 1 Debug.Print count End Sub |
上記の例では、countという変数にStaticステートメントを付け、繰り返し処理が行われるたびに1ずつ加算しています。そして、countの値をDebug.Printで出力しています。この場合、Subを実行するたびにcountの値が初期化されず、前回の値に1が加算された値が出力されることになります。
Staticステートメントを使うことで、プログラムの再開性を高めることができます。繰り返し処理の中で、前回の処理結果を保持しておくことで、次回の処理をよりスムーズに行うことができます。
どんなときに使うの?
とはいっても…実務上、どのような場面で使うのでしょうか?
実務上、Staticステートメントは以下のような場面で利用されることが多いようです。
- 変数の初期値を保持しておきたい場合
変数の初期値を保持しておきたい場合 - 繰り返し処理の中で、前回の結果を保持しておきたい場合
- 一時的に値を保持しておく必要がある場合
具体的な例として、Excel VBAを使ったデータ処理において、Staticステートメントが利用されることが多いです。
例えば、あるセルに値を書き込んだ後、次のセルに値を書き込む処理を繰り返す場合、Staticステートメントを使って前回の処理で書き込んだセルの位置を保持しておくことができます。
このように、Staticステートメントを使うことで、処理の効率化や再開性の向上が図られます。
また、他の例としてる計算結果が複数回利用される場合、Staticステートメントを使って一度計算した結果を保持しておくことで、同じ計算を繰り返し行う必要がなくなります。
これにより、処理の高速化が図られます。
サンプルコード
Staticステートメントを使って、初期値を保持する
1 2 3 4 5 6 7 |
Sub sample() Static i As Integer If i = 0 Then i = 1 End If Debug.Print i End Sub |
このコードでは、Staticステートメントを使って、i変数の初期値を保持しています。iが初期化された直後は、iの値が0になるため、条件分岐でiが0の場合に初期値1を代入しています。
Staticステートメントを使って、一時的に値を保持する
1 2 3 4 5 6 7 8 |
Sub sample() Static temp As String Dim str As String str = "Hello, World!" temp = str Debug.Print temp End Sub |
このコードでは、Staticステートメントを使って、temp変数に値を一時的に保持しています。
str変数に”Hello, World!”という文字列を代入し、temp変数にstr変数の値を代入しています。
こうすることで、temp変数にstr変数の値を保持することができます。
コメント