【Excel VBA】処理が終わっても変数に値を保持しておきたい時のやり方【備忘録】

Excel
スポンサーリンク

処理が終わっても変数に値を保持しておきたい時のやり方についての備忘録です。

スポンサーリンク

処理が終わっても変数に値を保持しておきたい時のやり方

例えばこんな感じのプロシージャがあったとします。

'こんにちはボタン
Sub msgbox_Hello()
    
    MsgBox "こんにちは!"
    
End Sub

'はりぼなブログボタン
Sub msgbox_Haribona()
    
    MsgBox "はりぼなブログ"
    
End Sub

これをそれぞれボタンに割り当て、押した際にその前に押していたボタンの情報を保存し出力する、というのをやってみたいと思います。

結論からですが、処理が終わっても値を保持しておくにはプロシージャ外に変数を書いておく必要があります。
上記のコードに書き加えるとしたらこんな感じです。

'プロシージャの外に書いておく
Dim str_Previous_Btn                        As String

'こんにちはボタン
Sub msgbox_Hello()
    
    MsgBox "こんにちは!"
    
End Sub

'はりぼなブログボタン
Sub msgbox_Haribona()
    
    MsgBox "はりぼなブログ"
    
End Sub

このようにプロシージャ外に変数を書いておくことで、処理が終わってもこの変数に値を保持しておくことができます。

ボタンを追加し、そのボタンに以下プロシージャを割り当てます。

'さっき押したボタン
Sub msgbox_Previous()

    MsgBox "さっき押したボタン:" & str_Previous_Btn
    
End Sub

併せて先程のプロシージャにどのボタンを押したかが分かるようにしてコードを追加しておきます。

'こんにちはボタン
Sub msgbox_Hello()
    
    MsgBox "こんにちは!"
    
    str_Previous_Btn = "こんにちはボタン"
    
End Sub

'はりぼなブログボタン
Sub msgbox_Haribona()
    
    MsgBox "はりぼなブログ"
    
    str_Previous_Btn = "はりぼなブログボタン"

End Sub

では実際に値が保持されているか見てみましょう。
「こんにちはボタン」か「はりぼなブログボタン」のどちらかを押します。

続けて「さっき押したボタン」を押します。
すると先程押した「こんにちはボタン」が表示されています。

このようにプロシージャ外に変数を書いておくことで、処理が終わった後でも値を保持し続けることができるようになるわけです。

コメント

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