Excel 2003 VBA プロジェクトで、MSCOMCTL.OCX の TreeCtrl を使用しています。コントロールをアプリケーションのフォームに動的に追加します (以下のコードを参照)。
TreeCtrl の NodeClick イベントを処理したいと思います。
コントロールは動的に追加されるため、TreeCtrl_NodeClick を使用するだけでは機能しないようです。また、コンパイル時に不明な型では機能しないように見えるため、WithEvents アプローチを使用できません。
'Does not work. WithEvents probably only works on known data types that have events.
'private WithEvents treeCtrl As Object
'This code adds the control to the form
Private Sub UserForm_Initialize()
Dim treeCtrl As Object
Set treeCtrl = Me.Controls.Add("MSComctlLib.TreeCtrl.2", "MyTreeCtrl")
'Does not work: AddHandler is not available in VBA.
'AddHandler TreeCtrl.NodeClick, AddressOf UserForm1.MyTreeCtrl_NodeClick
End Sub
'This is supposed to be the event handler but it does not get called.
Private Sub MyTreeCtrl_NodeClick(ByVal Node As Object)
MsgBox "Node clicked"
End Sub
MSCOMCTL.OCX を動的にロードする必要があることに注意してください。VBA プロジェクトに静的参照として配置することはできません (プロジェクトは異なるバージョンの Excel で実行する必要があるため)。