Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1132to1136
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

MSGBOX nur einmal! | Herbers Excel-Forum

MSGBOX nur einmal!
25.01.2010 09:46:01
lisa


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

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: MSGBOX nur einmal!
25.01.2010 09:53:22
Hajo_Zi
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

Anzeige
AW: MSGBOX nur einmal!
25.01.2010 10:04:27
lisa
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
AW: MSGBOX nur einmal!
25.01.2010 10:10:20
Hajo_Zi
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
Anzeige
AW: MSGBOX nur einmal!
25.01.2010 09:54:20
Klaus M.vdT.
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

AW: MSGBOX nur einmal!
25.01.2010 09:57:47
Hajo_Zi
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
Anzeige
AW: MSGBOX nur einmal!
25.01.2010 10:03:43
Hajo_Zi
Hallo Klaus,
ich habe gerade gesehen Cancel ist aus dem Original und bei mir auch drin.
Gruß Hajo
AW: MSGBOX nur einmal!
25.01.2010 10:10:51
lisa
Hallo Hajo
Nein leider funktioniert das auch nicht! Es werden zwar die leerzellen makiert aber es kommt keine Meldung mehr
Gruß Lisa
AW: MSGBOX nur einmal!
25.01.2010 10:07:02
lisa
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
AW: MSGBOX nur einmal!
25.01.2010 10:03:13
welga
Hallo,
ersetze doch einfach jede MsgBox mit:
if hinweis then
MsgBox "Bitte füllen sie alle Felder aus!"
hinweis=false
end if
Gruß
welga
Anzeige
AW: MSGBOX nur einmal!
25.01.2010 10:16:10
lisa
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
Anzeige
AW: MSGBOX nur einmal!
25.01.2010 10:21:55
welga

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
Anzeige
AW: MSGBOX nur einmal!
25.01.2010 10:29:54
Michael
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
AW: ;-) stimmt funktioniert!
25.01.2010 10:38:00
lisa
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
Anzeige
AW: ;-) stimmt funktioniert!
25.01.2010 10:39:29
Hajo_Zi
Hallo Lisa,
mein letzter Vorschlag auch, der sich mehr an Dein Konzept gehalten hat.
Gruß Hajo

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige