一回も披露したことのない豆知識

Useform1のコマンドボタンをクリックすると
Private Sub CommandButton1_Click()
Call 処理
End Sub
というように、「処理」を呼び出し。これで終わるようにしていました。しかし、不具合が出てしまい、ステップインで見てみると「処理」からEndSubに行き、その後Useform2のコマンドボタンイベントのEnd Withへ
Private Sub CommandButton1_Click()
With Userform1
....
End With ←
   ・・・
End Sub
上のように矢印の部分へ飛んでしまいます。全く、独立な、コマンドイベントへ飛んで処理されているのです。それも、飛んだ箇所がEnd Withからです。こんなことがあるのでしょうか?
Private Sub CommandButton1_Click()
Call 処理
Exit Sub
End Sub
上のようにExit Subを追加してもやはりそこから飛んでしまいます。
なぜでしょうか?詳しい方アドバイスお願い致します。

A 回答 (4件)

「何々のはず」論からいえば、Private Sub CommandButton1_Click()とどちらも同じでもUserForm1と


UserForm2のクリックイベントの飛び先は区別してくれているはず。この点で重大なバグがあるとのことも聞いたことがない。だから質問になるわけですが。
こういう場合、他(システムのバグ等)を疑いたくなるが、経験から、自分のミスだと極力考えを持っていって、原因究明に当たるべきと思います。
UserForm2に飛ぶ原因が何かないか
、実際に飛んでいるのか再確認されては
UserForm2の
Private Sub CommandButton1_Click()
With Userform1
....
End With ←
   ・・・
End Sub
のPrivate Sub CommandButton1_Click()の直下に
MsgBox "通過1"とでも入れて、実行してみては。
With Userform1の下にも
MsgBox "通過2"をいれてみるとか。
もう少し詳しいコードの紹介がないと、「ではないか」
論に終わってしまいそう。
経験から、プログラムって、一部だけ示して、問題箇所が見つかるほど、易しい作業と思いますか。えてして自分の注目点以外に原因がある場合が多い。だからこそ梃子摺る
ので、当たり前のことを言っているに過ぎないですが。
    • good
    • 0

#3さんがおっしゃるとおり現状では「たられば」にしかなりませんね。


ちょっと確認できる状況ではないのですが、
一応一般論としては、当然
Call 処理
の内容を疑うことになりそうです。
この中にUseform2の内容を変更するような処理はしていませんか?
それとUseform2の更新後処理などにCommandButton1_Clickをイベントに割り当てしていれば、そのようなことになるかもしれません。

確認できないんで不明確なことですが、その辺を確認していただいて補足していただければもう少し詳しく回答できるかもしれません。
    • good
    • 0

ボタンの名称が同じなので、VBが区別できなくて


両方の処理を実行しているようです。
Useform1とUseform2のボタン名を異なるものにしてしまうのでは
だめでしょうか?
    • good
    • 0

CommandButton1_Click()


が2つあるってことですか?
    • good
    • 0

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