application.enableevents won't help with these controls.
But you can keep track of it yourself.
At the top of the userform (it's a userform, right?) module:
Dim BlkProc as boolean
.....
Private Sub ComboBoxEndDate_Change()
if blkproc = true then
exit sub
end if
If ComboBoxEndDate.Value < ComboBoxStartDate.Value Then
'use & to concatenate text and + to add numbers
MsgBox ComboBoxEndDate.Value & _
" MUST be GREATER than Start Date!", &
vbOKOnly + vbWarning, "Date Input Error"
Worksheets("RFJ").Range("N1") = 1
blkproc = true
ComboBoxEndDate.Text = Format(CDate(Worksheets("Demo").Range("A22")), _
"mm/yyyy") ' Reset to Default Orient End Date
blkproc = false
Else
blkproc = true
ComboBoxEndDate.Text = Format(CDate(ComboBoxEndDate.Value), "mm/yyyy")
blkproc = false
End If
End Sub
==============
An alternative that I'd use if I were you would be to add a label (make it a red
font) and instead of displaying a msgbox, you could change the .caption of the
label.
I think it's a little "cleaner" for the user, too:
Private Sub ComboBoxEndDate_Change()
if blkproc = true then
exit sub
end if
me.label1.caption = "" 'if it's ok, make it invisible
If ComboBoxEndDate.Value < ComboBoxStartDate.Value Then
'use & to concatenate text and + to add numbers
me.label1.caption = ComboBoxEndDate.Value & _
" MUST be GREATER than Start Date!"
Worksheets("RFJ").Range("N1") = 1
blkproc = true
ComboBoxEndDate.Text = Format(CDate(Worksheets("Demo").Range("A22")), _
"mm/yyyy") ' Reset to Default Orient End Date
blkproc = false
Else
blkproc = true
ComboBoxEndDate.Text = Format(CDate(ComboBoxEndDate.Value), "mm/yyyy")
blkproc = false
End If
End Sub
(You'll still want to stop the extra processing, though.)