VBAから変更した時だけイベントを発生させない方法
Excel VBA で、コンボボックスの選択をユーザーが変更した時はイベントハンドラが呼び出されて処理をしていますが、VBAのコードからコンボボックスの選択を変更した時には、このイベントハンドラが呼び出されないようにしたいのですが、どのように記述すればよいでしょうか。
例えば、下記のコードの (A) の部分で、VBAのコードからコンボボックスの選択を変更していますが、ここでイベントが発生しないようにしたいのですが、Application.EnableEvents = False を記述してもイベントが発生していますがなぜでしょうか。どのように記述すれば (A) の部分でイベントが発生しなくなりますでしょうか。
よろしくお願いします。(Windows7 , Excel2010 )
---Module1----------
Option Explicit
Sub main()
UserForm1.Show
End Sub
---UserForm1--------
Option Explicit
Private Sub UserForm_Initialize()
Dim i As Integer
ComboBox1.Style = fmStyleDropDownList
For i = 1 To 30
ComboBox1.AddItem Format(i, "00")
Next i
End Sub
Private Sub CommandButton1_Click()
Dim num As Integer
Dim index As Integer
num = ComboBox1.ListCount
index = ComboBox1.ListIndex
If index = num - 1 Then
Application.EnableEvents = False
ComboBox1.ListIndex = -1 '<----------(A)
Application.EnableEvents = True
Else
ComboBox1.ListIndex = index + 1
End If
End Sub
Private Sub ComboBox1_Change()
MsgBox ("ComboBox1_Changeイベント発生")
End Sub
------------------------------------
お礼
「コマンド0にフォーカスが入ったとき」なら納得しました! ありがとうございました。