HERBERS Excel-Forum - das Archiv
doppelte MsgBox vermeiden - wie?
Wolfgang

Hallo,
der untenstehende Code soll vermeiden, dass eine Checkbox aktiviert werden kann, wenn die Textbox33 noch leer ist. Bei aktuellem Code funktioniert das zwar auch, allerdings erscheint die MsgBox immer zweimal. Wie kann ich das vermeiden, so dass die MsgBox. nur einmal erscheint. Habe schon zig Dinge versucht, ohne Erfolg. Danke schon jetzt für die Rückmeldungen.
Gruß - Wolfgang
Private Sub CheckBox4_Change()
If TextBox33.Value = "" Then
MsgBox "Es wurden keine sonstigen Kosten eingegeben, die in die Berechnung einbezogen werden kö _
nnten!", vbInformation
CheckBox4.Value = False
End If
End Sub

AW: doppelte MsgBox vermeiden - wie?
Hajo_Zi

Halo Wolfgang,
wo ist die Tabelle oder UserForm.

AW: doppelte MsgBox vermeiden - wie?
Wolfgang

Hallo Hajo,
die Textbox und auch die CheckBox befinden sich auf einem UF, so dass sich auch der Code im UF befindet. Danke für die Rückmeldung.
Gruß - Wolfgang
AW: doppelte MsgBox vermeiden - wie?
Hajo_Zi

Hallo Wolfgang,
ungetestet.
Option Explicit
Private Sub CheckBox4_Change()
If CheckBox4.Tag = "" Then
CheckBox4.tag = 1
If TextBox33.Value = "" Then
MsgBox "Es wurden keine sonstigen Kosten eingegeben, die in die Berechnung  _
einbezogen werden " _
& "könnten!", vbInformation
CheckBox4.Value = False
End If
CheckBox4.tag = ""
End If
End Sub

Gruß Hajo
Danke Hajo, klappt wunderbar!
Wolfgang

Hallo Hajo,
sorry, dass ich mich jetzt erst wieder melde, hatte noch ein längeres Telefonat. Konnte soeben Deinen Code einbauen.- Er läuft wunderbar und bringt auch nur noch einmal die MsgBox. Hab recht herzlichen Dank dafür!!
Gruß - Wolfgang
AW: doppelte MsgBox vermeiden - wie?
hary

Nabend Wolfgang
koenntest Du auch so loesen. Prueft wenn Du mit der Maus an die Checkbox kommst. Wenn Txtb. leer wird der Focus draufgesetzt.

Private Sub CheckBox4_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As  _
Single, ByVal Y As Single)
If TextBox33.Value = "" Then
MsgBox "Es wurden keine sonstigen Kosten eingegeben, die in die Berechnung einbezogen werden kö _
nnten!", vbInformation
TextBox33.SetFocus
End If
End Sub

Gruss hary
MsgBox in UF nur einmal anzeigen
NoNet

Hallo Wolfgang,
die MsgBox erscheint zweimal, da innerhalb des Makros die CheckBox wieder "zurückgesetzt" wird, was ebenfalls einer "Änderung" entspricht und daher das Ereignis "CheckBox4_Change()" erneut ausgelöst wird.
Ausserhalb eines UserForms würde man die Ereignissteuerung temporär mit folgenden Zeilen deaktivieren :
Application.EnableEvents=FALSE
Checkbox4.Value=FALSE
Application.EnableEvents=TRUE

Da die Ereignisse in UserForms jedoch nicht deaktiviert werden können, funktioniert dies hier nicht, d.h. die Zeile CheckBox4.Value=FALSE ruft das gleiche Makro noch einmal auf.
Daher muss man sich hier mit einer "Hilfsvariablen" (hier : bolChk4) behelfen, die innerhalb dieses Makros prüft, ob die MsgBox erneut angezeigt werden soll :
Dim bolChk4 As Boolean
Private Sub CheckBox4_Change()
bolChk4 = Not bolChk4
If TextBox33.Value = "" And bolChk4Then
MsgBox "Es wurden keine sonstigen Kosten eingegeben, " & _
"die in die Berechnung einbezogen werden könnten! ", vbInformation
CheckBox4.Value = False
End If
End Sub
Gruß, NoNet
AW: MsgBox in UF nur einmal anzeigen
Wolfgang

Hallo NoNet,
Danke für Deine Rückmeldung. Ich wollte soeben Deinen Code auch einbauen/testen. Es erscheint Syntaxfehler und der Auszug: If TextBox33.Value = "" And bolChk4Then wird in rot angezeigt. Was könnte ich da evtl. noch verändern?
Danke und Gruß
Wolfgang
Leerzeichen zwischen "bolChk4" und "Then"
NoNet

Hallo Wolfgang,
irgendwie ist da ein Leerzeichen "hopps"gegangen ;-) - so ist es richtig :
If TextBox33.Value = "" And bolChk4 Then

Gruß, NoNet
AW: doppelte MsgBox vermeiden - wie?
Gerd

Guten Abend,
auch noch meinen Kram dazu.
Private Sub CheckBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1 = "" Then CheckBox1 = False: MsgBox "TB leer": Cancel = True
End Sub

Private Sub TextBox1_Change()
If TextBox1 = "" Then CheckBox1 = False
End Sub
Gruß Gerd
Dank Allen!!!
Wolfgang

Hallo Hajo, Hary, NoNet und Gerd,
ich habe, so bin ich ganz ehrlich, noch die Hinweise von Gerd aufgegriffen, die auch wunderbar funktionieren und für mich als Laie schnell nachvollziehbarer sind. Bei Deinem Code, Hajo, mußte ich in der Folge feststellen, dass die MsgBox immer nur einmal kam, wenn ich danach wieder die CheckBox anhake und die Textbox ist noch weiterhin leer, erscheint dann keine weitere Meldung mehr. Ich danke Euch allen somit recht herzlich für eure erneute Geduld mit mir und für die Ausarbeitungen.
Gruß und eine angenehme Nachtruhe.
Wolfgang