Microsoft Excel

Herbers Excel/VBA-Archiv

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

MSGBOX nur einmal! | Herbers Excel-Forum


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


Danke für eure Bemühungen
Lisa

  

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
GrußformelHomepage


  

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 Sub
Gruß 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

Funktioniert so bei mir


  

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 Sub
Grüße

Michael


  

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


Beiträge aus den Excel-Beispielen zum Thema "MSGBOX nur einmal!"