ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   MsgBox Displays Twice (https://www.excelbanter.com/excel-programming/435611-msgbox-displays-twice.html)

DogLover

MsgBox Displays Twice
 
I have 2 combo boxes for Dates; ComboBx1 = StartDAte, Combo2=EndDate. I
have in Combo box VB Code If EndDate<StartDate, then MsgBx dislays DAte Input
Error. Then, when I add a code to set the EndDateCombo.Value=Default Value,
the MsgBox Displays AGAIN. Does anyone know how to not have it reappear????

Patrick Molloy[_2_]

MsgBox Displays Twice
 
are these on a form? can you show us the code please?

"DogLover" wrote:

I have 2 combo boxes for Dates; ComboBx1 = StartDAte, Combo2=EndDate. I
have in Combo box VB Code If EndDate<StartDate, then MsgBx dislays DAte Input
Error. Then, when I add a code to set the EndDateCombo.Value=Default Value,
the MsgBox Displays AGAIN. Does anyone know how to not have it reappear????


DogLover

MsgBox Displays Twice
 
This is on the View Code attached to the EndDate Combo Box.

Private Sub ComboBoxEndDate_Change()
If ComboBoxEndDate.Value < ComboBoxStartDate.Value Then
MsgBox ComboBoxEndDate.Value + " MUST be GREATER than Start
Date!", vbOKOnly + vbWarning, "Date Input Error"
Worksheets("RFJ").Range("N1") = 1
ComboBoxEndDate.Text =
Format(CDate(Worksheets("Demo").Range("A22")), "mm/yyyy") ' Reset to Default
Orient End Date

Else
ComboBoxEndDate.Text = Format(CDate(ComboBoxEndDate.Value),
"mm/yyyy")
End If
End Sub




"Patrick Molloy" wrote:

are these on a form? can you show us the code please?

"DogLover" wrote:

I have 2 combo boxes for Dates; ComboBx1 = StartDAte, Combo2=EndDate. I
have in Combo box VB Code If EndDate<StartDate, then MsgBx dislays DAte Input
Error. Then, when I add a code to set the EndDateCombo.Value=Default Value,
the MsgBox Displays AGAIN. Does anyone know how to not have it reappear????


Patrick Molloy[_2_]

MsgBox Displays Twice
 
the change event itself chnages the value, so that raises the event
again....add the two lines indicated

Private Sub ComboBoxEndDate_Change()
If ComboBoxEndDate.Value < ComboBoxStartDate.Value Then
MsgBox ComboBoxEndDate.Value + " MUST be GREATER than Start
Date!", vbOKOnly + vbWarning, "Date Input Error"
Worksheets("RFJ").Range("N1") = 1

Application.EnableEvents = FALSE

ComboBoxEndDate.Text =
Format(CDate(Worksheets("Demo").Range("A22")), "mm/yyyy") ' Reset to Default
Orient End Date

Else
ComboBoxEndDate.Text = Format(CDate(ComboBoxEndDate.Value),
"mm/yyyy")
End If
Application.EnableEvents = TRUE
End Sub




"DogLover" wrote:

This is on the View Code attached to the EndDate Combo Box.

Private Sub ComboBoxEndDate_Change()
If ComboBoxEndDate.Value < ComboBoxStartDate.Value Then
MsgBox ComboBoxEndDate.Value + " MUST be GREATER than Start
Date!", vbOKOnly + vbWarning, "Date Input Error"
Worksheets("RFJ").Range("N1") = 1
ComboBoxEndDate.Text =
Format(CDate(Worksheets("Demo").Range("A22")), "mm/yyyy") ' Reset to Default
Orient End Date

Else
ComboBoxEndDate.Text = Format(CDate(ComboBoxEndDate.Value),
"mm/yyyy")
End If
End Sub




"Patrick Molloy" wrote:

are these on a form? can you show us the code please?

"DogLover" wrote:

I have 2 combo boxes for Dates; ComboBx1 = StartDAte, Combo2=EndDate. I
have in Combo box VB Code If EndDate<StartDate, then MsgBx dislays DAte Input
Error. Then, when I add a code to set the EndDateCombo.Value=Default Value,
the MsgBox Displays AGAIN. Does anyone know how to not have it reappear????


DogLover

MsgBox Displays Twice
 
Still popping up twice. I wonder if there is another event to use rather
than the change?

"Patrick Molloy" wrote:

the change event itself chnages the value, so that raises the event
again....add the two lines indicated

Private Sub ComboBoxEndDate_Change()
If ComboBoxEndDate.Value < ComboBoxStartDate.Value Then
MsgBox ComboBoxEndDate.Value + " MUST be GREATER than Start
Date!", vbOKOnly + vbWarning, "Date Input Error"
Worksheets("RFJ").Range("N1") = 1

Application.EnableEvents = FALSE

ComboBoxEndDate.Text =
Format(CDate(Worksheets("Demo").Range("A22")), "mm/yyyy") ' Reset to Default
Orient End Date

Else
ComboBoxEndDate.Text = Format(CDate(ComboBoxEndDate.Value),
"mm/yyyy")
End If
Application.EnableEvents = TRUE
End Sub




"DogLover" wrote:

This is on the View Code attached to the EndDate Combo Box.

Private Sub ComboBoxEndDate_Change()
If ComboBoxEndDate.Value < ComboBoxStartDate.Value Then
MsgBox ComboBoxEndDate.Value + " MUST be GREATER than Start
Date!", vbOKOnly + vbWarning, "Date Input Error"
Worksheets("RFJ").Range("N1") = 1
ComboBoxEndDate.Text =
Format(CDate(Worksheets("Demo").Range("A22")), "mm/yyyy") ' Reset to Default
Orient End Date

Else
ComboBoxEndDate.Text = Format(CDate(ComboBoxEndDate.Value),
"mm/yyyy")
End If
End Sub




"Patrick Molloy" wrote:

are these on a form? can you show us the code please?

"DogLover" wrote:

I have 2 combo boxes for Dates; ComboBx1 = StartDAte, Combo2=EndDate. I
have in Combo box VB Code If EndDate<StartDate, then MsgBx dislays DAte Input
Error. Then, when I add a code to set the EndDateCombo.Value=Default Value,
the MsgBox Displays AGAIN. Does anyone know how to not have it reappear????


Dave Peterson

MsgBox Displays Twice
 
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.)

DogLover wrote:

This is on the View Code attached to the EndDate Combo Box.

Private Sub ComboBoxEndDate_Change()
If ComboBoxEndDate.Value < ComboBoxStartDate.Value Then
MsgBox ComboBoxEndDate.Value + " MUST be GREATER than Start
Date!", vbOKOnly + vbWarning, "Date Input Error"
Worksheets("RFJ").Range("N1") = 1
ComboBoxEndDate.Text =
Format(CDate(Worksheets("Demo").Range("A22")), "mm/yyyy") ' Reset to Default
Orient End Date

Else
ComboBoxEndDate.Text = Format(CDate(ComboBoxEndDate.Value),
"mm/yyyy")
End If
End Sub

"Patrick Molloy" wrote:

are these on a form? can you show us the code please?

"DogLover" wrote:

I have 2 combo boxes for Dates; ComboBx1 = StartDAte, Combo2=EndDate. I
have in Combo box VB Code If EndDate<StartDate, then MsgBx dislays DAte Input
Error. Then, when I add a code to set the EndDateCombo.Value=Default Value,
the MsgBox Displays AGAIN. Does anyone know how to not have it reappear????


--

Dave Peterson


All times are GMT +1. The time now is 09:29 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com