実現したいこと
VBAのグローバル変数を使わずにUserFormのInitializeイベントに値を持ち込みたい。
発生している問題・エラーメッセージ
現在こちらの質問にてエクセルの挙動がおかしい原因(落ちる、IF判定できない)を探っております。
https://teratail.com/questions/el25h3tb1f9yhx
その中で、通常モジュールから
押されたボタンによって
新規登録時は1
上書き更新時は2
グローバル変数の値を格納してInitializeイベントの中で分岐させる処理を書いているのですが、グローバル変数の値の挙動がおかしい時があります。
該当のソースコード
VBA
1'通常モジュール 編集ボタン押下時 2 3intNum = 2 'グローバル変数 4 5UserForm1.show
VBA
1'UserForm1 Initializeイベント 2 3If intNum = 1 Then 4 '新規登録時のcmbBox等の読み込み処理 5ElseIf intNum = 2 Then 6 '編集時の値の格納処理 7Else 8 Msgbox "エラー" 9End If
というコードがあったとき、普段は通常通りに動くのですが、なぜかElseに入る時があります。
その時にIfの開始行にブレイクポイントを置いて
intNumの値をイミディエイトウィンドウにて
VBA
1?intNum = 2 2True
を確認しているにも関わらずElseに入ります。
試したこと
・Initializeイベント内でグローバル変数を再代入
intNum = intNum
するもElseに入りました。
・ローカル変数に格納してIf分岐させると
intNum_Local = intNum
If intNum_Local = 1 Then 等に書き換え
その瞬間は治ったがElseに入る時がある
(結局何も変わらず If判定できない)
グローバル変数は値が残り続けるとのことなので、今回のような挙動になった時、バグの原因になりかねないので残ってもらいたくありません。
このような挙動が起きている時グローバル変数に問題があるのか確かめるために、グローバル変数を使わずに通常モジュールから押したボタンを判定するための値を渡したいのですが渡す方法はありますか?
こちらについてお分かりになられる方いらっしゃいましたら、ご教授ください。
よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/12/28 12:03