タイトル | : VBA コントロールに付加したイベントが働かない |
記事No | : 16184 |
投稿日 | : 2015/09/15(Tue) 19:52 |
投稿者 | : わごなる |
お世話になります。
Office2013 VBAで動的にコンボボックスを作成し、イベントを割り付けることが目的です。
Workbook_Openにおけるコンボボックスの項目Add回路ではChangeなりClickイベントが発生していますが、 それ以降コンボボックスをどのように操作してもイベントが発生しません。 問題点がわかる方いらっしゃいましたらご教授頂きたいです。
現コードは下記の通りです。
※Workbook_Open内の関数でCmbMakeをCall
Sub CmbMake()
Dim cmbPos As Range Dim m_objOLE_C As Object Dim objcmb As ComboBox
'コンボボックスの位置を指定 Set cmbPos = Range(A3)
'コンボボックスを作成 Set m_objOLE_C = ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", _ Link:=False, DisplayAsIcon:=False, Left:=cmbPos.Left, _ Top:=cmbPos.Top, Width:=cmbPos.Width, height:=cmbPos.height) Set objcmb = ActiveSheet.OLEObjects(m_objOLE_C.Name).Object objcmb.Locked = False
Set NewObj = New clsObjectIvent Set NewObj.CMB = objcmb
With objcmb 'プロパティ変更 .AddItem "選択肢1", 0 .AddItem "選択肢2", 1 .BackStyle = fmBackStyleOpaque .BackColor = RGB(200, 250, 250) .Style = fmStyleDropDownList .ListIndex = 0 End With End Sub
−−−−−−−−−−−−−−−−−−−−−−−−−− ※クラスモジュール「clsObjectIvent」に下記コード Option Explicit Public WithEvents cmbBox As MSForms.ComboBox
Public Property Set CMB(InstComboBox As MSForms.ComboBox) Set cmbBox = InstComboBox End Property
Public Property Get CMB() As MSForms.ComboBox
End Property '確認用にイベント複数定義 Private Sub cmbBox_Change() MsgBox "cmbBox_Change" End Sub Private Sub cmbBox_Click() MsgBox "cmbbox_Click" End Sub Private Sub cmbBox_LostFocus() MsgBox "cmbbox_LostFocus" End Sub
Private Sub cmbBox_AfterUpdate() MsgBox "cmbbox_AfterUpdate" End Sub
|