Microsoft 製品に組み込まれている Visual Basic の実装。
ありがとうございます。
助言に従い、[VBA フォーラム] に引っ越します。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
次のようなVBAを実行すると、
FORMのActivateイベントが起きるようです。
コード記述の問題なのか、VBAの仕様の問題なのかを知りたく、投稿(質問します)
1.フォームを用意してコンポーネントを配置
UserFormを2つ(UserForm1、UserForm2)用意します。
UserForm1にListBoxを1つ、CommandButtonを2つ配置し
UserForm2にCommandButtonを1つ配置します。
2.次のようなコードを書き込みます。
ThisWorkbookに以下を。
'----------------
Private Sub Workbook_Open()
Application.WindowState = xlMinimized
UserForm1.Show
End Sub
'----------------
UserForm1に以下を。
'----------------
private Sub CommandButton1_Click()
UserForm1.ListBox1.AddItem "エントリー1"
End Sub
'--
Private Sub CommandButton2_Click()
UserForm2.Show
End Sub
'--
Private Sub UserForm_Activate()
MsgBox ("Activateイベントが起きたよ")
End Sub
'----------------
UserForm2に以下を。
'----------------
Private Sub CommandButton1_Click()
Me.Hide
End Sub
'----------------
・このマクロブックを開く
・課題イベントが起きる。(つまり、 MsgBox ("Activateイベントが起きたよ") が実行される)
むろん、これは、期待した動作です。
・UserForm1の CommandButton1をクリック
・UserForm1の CommandButton2をクリック
・これにより開くUserForm2をUserForm2の CommandButton1をクリックして閉じる
・UserForm1のListBox1の"エントリー1"をクリック ※
(つまり、FocusをListBox1の"エントリー1"に当てる)
・Windowsのスタートボタンからメモ帳を開き
・メモ帳を閉じる
・この直後、課題イベントが起きる。
(つまり、 MsgBox ("Activateイベントが起きたよ") が実行される)
これが疑問視している動作です。
一方、上記※を行わなければ、疑問視している動作は起きません。
また、私が確認する限り、Office2013でもOffice2016でも同じ動作が起きます。
Microsoft 製品に組み込まれている Visual Basic の実装。
ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。
ありがとうございます。
助言に従い、[VBA フォーラム] に引っ越します。
n.hojo さん、こんにちは。
マイクロソフト コミュニティをご利用いただき、ありがとうございます。
Excel 2013、2016 両方で書き込んでいただいた VBA を実行すると、意図しないタイミングでイベントが起こるのですね。
調べたのですが、この動作についてご案内できそうな情報が見つかりませんでした...。
また、この内容については専用のカテゴリがある [VBA フォーラム] にも質問を投稿して情報を集められてはいかがでしょうか。
よろしければご活用くださいね。