tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルVBA動的生成ボタンのイベント処理
記事No13200
投稿日: 2008/11/06(Thu) 10:14
投稿者ダンボ
Outlook2000のVBAですがExcel2000でも同様と思いますのでよろしくお願いします。

最下3行のコードで動的にフォーム上にCommandButtonを追加できることは確認しましたが、
このCommandButtonを押したときのイベントはどういう風に取得したら良いのでしょうか?
下記では受け取れませんでした。(VB.netならAddHandlerでOKですが)
Private Sub XX_Click()
  MsgBox ("XX")
End Sub
Private Sub NewButton_Click()
  MsgBox ("NewButton")
End Sub


Dim NewButton As CommandButton
Set NewButton = Me.Controls.Add("Forms.CommandButton.1", "XX", True)
NewButton.Caption = "NewButton"

[ツリー表示へ]
タイトルRe: VBA動的生成ボタンのイベント処理
記事No13201
投稿日: 2008/11/06(Thu) 10:22
投稿者魔界の仮面弁士
> このCommandButtonを押したときのイベントはどういう風に取得したら良いのでしょうか?

WithEvents 変数に受けることで、イベントを取得できるかと思います。

WithEvents は配列にできないので、任意個数のコントロールが
追加されるような場合は、コードにひと工夫必要ですけれども。

[ツリー表示へ]
タイトル【解決】 VBA動的生成ボタンのイベント処理
記事No13203
投稿日: 2008/11/06(Thu) 11:23
投稿者ダンボ
魔界の仮面弁士さん、いつもありがとうございます。

> WithEvents 変数に受けることで、イベントを取得できるかと思います。

Dim WithEvents NewButton  As CommandButton

をモジュール先頭の宣言部分に置くと、IDEの変数名一覧の中にNewButton が追加されました。
後は、普通のコーディングでOKです。

こういう風に使うんですね。遅延バインディングじゃないんだ?

[ツリー表示へ]