Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

doppelte MsgBox vermeiden - wie? | Herbers Excel-Forum


Betrifft: doppelte MsgBox vermeiden - wie? von: Wolfgang
Geschrieben am: 16.11.2009 20:58:21

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

  

Betrifft: AW: doppelte MsgBox vermeiden - wie? von: Hajo_Zi
Geschrieben am: 16.11.2009 21:16:21

Halo Wolfgang,

wo ist die Tabelle oder UserForm.

GrußformelHomepage


  

Betrifft: AW: doppelte MsgBox vermeiden - wie? von: Wolfgang
Geschrieben am: 16.11.2009 21:21:07

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


  

Betrifft: AW: doppelte MsgBox vermeiden - wie? von: Hajo_Zi
Geschrieben am: 16.11.2009 21:26:48

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


  

Betrifft: Danke Hajo, klappt wunderbar! von: Wolfgang
Geschrieben am: 16.11.2009 22:06:00

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


  

Betrifft: AW: doppelte MsgBox vermeiden - wie? von: hary
Geschrieben am: 16.11.2009 21:34:04

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


  

Betrifft: MsgBox in UF nur einmal anzeigen von: NoNet
Geschrieben am: 16.11.2009 21:55:53

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


  

Betrifft: AW: MsgBox in UF nur einmal anzeigen von: Wolfgang
Geschrieben am: 16.11.2009 22:19:27

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


  

Betrifft: Leerzeichen zwischen "bolChk4" und "Then" von: NoNet
Geschrieben am: 16.11.2009 22:24:18

Hallo Wolfgang,

irgendwie ist da ein Leerzeichen "hopps"gegangen ;-) - so ist es richtig :

If TextBox33.Value = "" And bolChk4 Then

Gruß, NoNet


  

Betrifft: AW: doppelte MsgBox vermeiden - wie? von: Gerd L
Geschrieben am: 16.11.2009 22:20:28

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


  

Betrifft: Dank Allen!!! von: Wolfgang
Geschrieben am: 16.11.2009 22:36:52

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


Beiträge aus den Excel-Beispielen zum Thema "doppelte MsgBox vermeiden - wie?"