Informationen und Beispiele zum Thema MsgBox | |
---|---|
![]() |
MsgBox-Seite mit Beispielarbeitsmappe aufrufen |
Betrifft: MSGBOX nur einmal!
von: lisa
Geschrieben am: 25.01.2010 09:46:01
Hallo
Bei folgendem Makro wird mir dreimal hintereinander die MSGBox gezeigt, wenn die Felder leer sind.
Wie stelle ich es so um, dass nur eineinziges mal die MsgBox angezeigt werden soll?
Bitte um eure Hilfe, da ich selbst schon das ganze WE getestet habe aber leider ohne Erfolg
Private Sub Worksheet_Deactivate() If Range("B3") = "" Then Range("B3").Interior.ColorIndex = 36 Cancel = True MsgBox "Bitte füllen sie alle Felder aus!" Sheets("Tabelle1").Activate End If If Range("B6") = "" Then Range("B6").Interior.ColorIndex = 36 Cancel = True MsgBox "Bitte füllen sie alle Felder aus!" Sheets("Tabelle1").Activate End If If Range("C30") = "" Then Range("C30").Interior.ColorIndex = 36 Cancel = True Sheets("Tabelle1").Activate MsgBox "Bitte füllen sie alle Felder aus!" End If End Sub
Betrifft: AW: MSGBOX nur einmal!
von: Hajo_Zi
Geschrieben am: 25.01.2010 09:53:22
Hallo Lisa,
Option Explicit Private Sub Worksheet_Deactivate() Dim BoAnzeige As Boolean If Range("B3") = "" Then Range("B3").Interior.ColorIndex = 36 Cancel = True MsgBox "Bitte füllen sie alle Felder aus!" BoAnzeige = True Sheets("Tabelle1").Activate Else If Range("B6") = "" Then Range("B6").Interior.ColorIndex = 36 Cancel = True If BoAnzeige = False Then MsgBox "Bitte füllen sie alle Felder aus!" BoAnzeige = True End If Sheets("Tabelle1").Activate End If If Range("C30") = "" Then Range("C30").Interior.ColorIndex = 36 Cancel = True Sheets("Tabelle1").Activate If BoAnzeige = False Then MsgBox "Bitte füllen sie alle Felder aus!" End If End Sub
Betrifft: AW: MSGBOX nur einmal!
von: lisa
Geschrieben am: 25.01.2010 10:04:27
Hallo Hajo
Danke für die schnelle Antwort! Die MsgBox wird nun einemal angezeigt aber leider auch nur das erste Feld gelb makiert!
danke für deine Hilfe Lisa
Betrifft: AW: MSGBOX nur einmal!
von: Hajo_Zi
Geschrieben am: 25.01.2010 10:10:20
Hallo Lisa,
das Cancel hast Du entfernt.
An dem von Dir angesprochenen Teil habe ich nichts geändert. Ich hatte noch ein else für End if
Option Explicit Private Sub Worksheet_Deactivate() Dim BoAnzeige As Boolean If Range("B3") = "" Then Range("B3").Interior.ColorIndex = 36 MsgBox "Bitte füllen sie alle Felder aus!" BoAnzeige = True Sheets("Tabelle1").Activate End If If Range("B6") = "" Then Range("B6").Interior.ColorIndex = 36 If BoAnzeige = False Then MsgBox "Bitte füllen sie alle Felder aus!" BoAnzeige = True End If Sheets("Tabelle1").Activate End If If Range("C30") = "" Then Range("C30").Interior.ColorIndex = 36 Sheets("Tabelle1").Activate If BoAnzeige = False Then MsgBox "Bitte füllen sie alle Felder aus!" End If End SubGruß Hajo
Betrifft: AW: MSGBOX nur einmal!
von: Klaus M.vdT.
Geschrieben am: 25.01.2010 09:54:20
Hallo Lisa,
die Box wird bei dir für jedes fehlende Feld einmal angezeigt! Probiers mal so:
Private Sub Worksheet_Deactivate() Dim bShowBox As Boolean If Range("B3") = "" Then Range("B3").Interior.ColorIndex = 36 End If If Range("B6") = "" Then Range("B6").Interior.ColorIndex = 36 End If If Range("C30") = "" Then Range("C30").Interior.ColorIndex = 36 End If If bShowBox = True Then Cancel = True MsgBox "Bitte füllen sie alle Felder aus!" Sheets("Tabelle1").Activate End If End Sub
Betrifft: AW: MSGBOX nur einmal!
von: Hajo_Zi
Geschrieben am: 25.01.2010 09:57:47
Hallo Klaus,
ich hätte vermutet die Eigenschaft cancel gibt es nicht.
Die Variable bShowBox wird bei dir nicht verändert, ist alsio immer false.
Gruß Hajo
Betrifft: AW: MSGBOX nur einmal!
von: Hajo_Zi
Geschrieben am: 25.01.2010 10:03:43
Hallo Klaus,
ich habe gerade gesehen Cancel ist aus dem Original und bei mir auch drin.
Gruß Hajo
Betrifft: AW: MSGBOX nur einmal!
von: lisa
Geschrieben am: 25.01.2010 10:10:51
Hallo Hajo
Nein leider funktioniert das auch nicht! Es werden zwar die leerzellen makiert aber es kommt keine Meldung mehr
Gruß Lisa
Betrifft: AW: MSGBOX nur einmal!
von: lisa
Geschrieben am: 25.01.2010 10:07:02
Hallo Klaus
Auch dir ein Dank für deine schnelle Hilfe
Leider bekomme ich keine MsgBox mehr angezeigt und die Felder werden auch nicht gelb makiert!
Gruß Lisa
Betrifft: AW: MSGBOX nur einmal!
von: welga
Geschrieben am: 25.01.2010 10:03:13
Hallo,
ersetze doch einfach jede MsgBox mit:
if hinweis then
MsgBox "Bitte füllen sie alle Felder aus!"
hinweis=false
end if
Gruß
welga
Betrifft: AW: MSGBOX nur einmal!
von: lisa
Geschrieben am: 25.01.2010 10:16:10
Hallo welga
das würde dann so aussehen, wenn ich es richtig verstanden habe:
If Range("B3") = "" Then
Range("B3").Interior.ColorIndex = 36
Cancel = True
If hinweis Then
MsgBox "Bitte füllen sie alle Felder aus!"
hinweis = False
End If
Sheets("Tabelle1").Activate
End If
If Range("B6") = "" Then
Range("B6").Interior.ColorIndex = 36
Cancel = True
If hinweis Then
MsgBox "Bitte füllen sie alle Felder aus!"
hinweis = False
End If
Sheets("Tabelle1").Activate
End If
If Range("C30") = "" Then
Range("C30").Interior.ColorIndex = 36
Cancel = True
Sheets("Tabelle1").Activate
If hinweis Then
MsgBox "Bitte füllen sie alle Felder aus!"
hinweis = False
End If
End If
End Sub
leider bekomme ich auch dann keine MsgBox mehr anhezeigt!
Gruß lisa
Betrifft: AW: MSGBOX nur einmal!
von: welga
Geschrieben am: 25.01.2010 10:21:55
Sub test() Dim hinweis As Boolean, cancel As Boolean hinweis = True If Range("B3") = "" Then Range("B3").Interior.ColorIndex = 36 cancel = True If hinweis Then MsgBox "Bitte füllen sie alle Felder aus!" hinweis = False End If Sheets("Tabelle1").Activate End If If Range("B6") = "" Then Range("B6").Interior.ColorIndex = 36 cancel = True If hinweis Then MsgBox "Bitte füllen sie alle Felder aus!" hinweis = False End If Sheets("Tabelle1").Activate End If If Range("C30") = "" Then Range("C30").Interior.ColorIndex = 36 cancel = True Sheets("Tabelle1").Activate If hinweis Then MsgBox "Bitte füllen sie alle Felder aus!" hinweis = False End If End If End Sub
Betrifft: AW: MSGBOX nur einmal!
von: Michael
Geschrieben am: 25.01.2010 10:29:54
Hallo,
ist vielleicht nicht das sauberste, aber geht:
Private Sub Worksheet_Deactivate() Dim rngZelle As Range Dim rngBereich As Range Dim boHinweis As Boolean Set rngBereich = Range("B3,B6,C30") For Each rngZelle In rngBereich If rngZelle = "" Then rngZelle.Interior.ColorIndex = 36 boHinweis = True End If Next If boHinweis Then MsgBox "Bitte füllen sie alle Felder aus!" Sheets("Tabelle1").Activate End If End SubGrüße
Betrifft: AW: ;-) stimmt funktioniert!
von: lisa
Geschrieben am: 25.01.2010 10:38:00
Hallo Michael, ich weiß nicht woran man mißt obe es sauber ist oder nicht, aber es ist wie du sagst, ES FUNKTIONIERT Danke dir
Freu Lisa
Betrifft: AW: ;-) stimmt funktioniert!
von: Hajo_Zi
Geschrieben am: 25.01.2010 10:39:29
Hallo Lisa,
mein letzter Vorschlag auch, der sich mehr an Dein Konzept gehalten hat.
Gruß Hajo