【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?

下記のようにコードを入力しました。
イベントプロシージャでTrueにしたflagが標準モジュールでfalseになってしまいます。
関連付けられていないのかと宣言セクションでPublic~と宣言しても、同じ結果になりました。
どのように対処すればよいのでしょうか。

イベントプロシージャ
Private Sub CheckBox1_Click()
Dim flag As Boolean
If CheckBox1 = True Then
flag = True
End If
Call 対象
End Sub

標準モジュール
Sub 対象()
Dim flag As Boolean
If flag = True Then
MsgBox "Trueです"
End If
End Sub

A 回答 (1件)

変数flagは、各々のプロシージャ内で別々に宣言されているので、そのプロシージャ実行開始時に生成され(初期値はFalse)て、終了時に消滅しています。


つまり各々のプロシージャで異なる変数にアクセスしているということになります。
この辺は「変数のスコープ」というキーワードで調べるとよろしいかと思います。

以下の様に、標準モジュールのプロシージャ外で宣言し、アクセスするようにしてみては如何でしょうか。

イベントプロシージャ
Private Sub CheckBox1_Click()
  If CheckBox1 = True Then
    標準モジュール.flag = True
  End If
  Call 対象
End Sub


-----------------------------
標準モジュール
Public Dim flag As Boolean 'プロシージャの外で宣言する。

Sub 対象()
  If flag = True Then
    MsgBox "Trueです"
  End If
End Sub
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
標準モジュールの宣言セクションでPublic Dim flag As Boolean と入力すると、構文エラーになってしまいました。

お礼日時:2017/03/19 13:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!