ここ数日間WithEvents
、VBA クラス モジュールで MSForms オブジェクトを使用すると、ユーザー フォーム全体の一連のコントロールに複数のイベント ハンドラーを割り当てることができる場合、VBA の継承の欠如を回避しようと試みてきました。私は主に_Enter
and_Exit
イベントの後にいます。これらは、私のコントロールがあるMSForms.Control
(下位) ではなくにあります。MSForms.TextBox
したがって、次の行に沿って、各 TextBox をクラス モジュールの tbTextBox 変数に追加します。
Private WithEvents tbTextBox as MSForms.TextBox
Private Sub tbTextBox_Exit()
' Do Something Here - doesn't work
End Sub
Private Sub tbTextBox_DblClick()
' Do Something Here - works
End Sub
DblClick は (MSForms.TextBox で) 正常に動作しますが、Exit (MSForms.Control で) では機能しません。
私は多かれ少なかれ、これらのイベントが (親レベルで) 発生することを知っているので、Win32 API を介してフォームのコントロールにフックし、手動でいずれかを監視したいと考えています。これらのイベントが発生したら、独自のイベントを発生させて、独自に機能を再実装します。
これまでのところ、私は Google から空白を引いていますが、正しい方向に向けることができるよりも高度な VBA コーダーがいると思いました。また、私は Excel 2003 を使用しているため、VB.Net はオプションではなく、環境は高度にサンドボックス化されているため、外部モジュールや .dll は使用できません。