Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
844to848
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
844to848
844to848
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Doppelte MsgBox verhindern

Doppelte MsgBox verhindern
12.02.2007 12:12:46
mtremer
Hallo Excel-Freunde,
bei folgendem Code bekomme ich zwei Mal die MsgBox.
Wie kann ich die verhindern?
Zum Verständnis: Es soll geprüft werden, ob CheckBox6 aktiviert ist.
Wenn ja soll er die beschriebenen Vorgänge durchführen.
Wenn nicht, dann soll die MsgBox kommen und den Haken von CheckBox14 wieder herausnehmen.

Private Sub CheckBox14_Click()
With ActiveSheet
If CheckBox6 Then
With CheckBox14
If .Value Then
CheckBox13.Value = False
Range("C13").Value = .Caption
Else
Range("C13").Value = "in Bearbeitung"
End If
End With
Else
CheckBox14.Value = False
MsgBox "CheckBox6 ist noch nicht angeklickt"
Exit Sub
End If
End With
End Sub

Lösung 1: eine MsgBox, dann End Sub wie beschrieben.
Lösung 2: eine MsgBox, bei der man "Ja" oder "Nein" anklicken kann. Bei "Nein" = End Sub wie beschrieben, bei "Ja" = CheckBox6 aktivieren und weiter im ursprünglichen Sub (CheckBox13.Value = False und Range("C13").Value = .Caption)
Danke für Eure Mühe.
Viele Grüße
Marco

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Doppelte MsgBox verhindern
12.02.2007 12:36:06
Mister B
Hallo Marco,
ich bin keineswegs ein Profi in VBA, aber sollte die Zeile:
If CheckBox6 Then
nicht so aussehen:
If CheckBox6.Value = True Then
Gruß
Martin
AW: Doppelte MsgBox verhindern
12.02.2007 12:41:28
mtremer
Hallo Martin,
auch ich bin kein Profi.
Mittlerweile verstehe ich aber etwas mehr und kann mir den Code mit vielen Bausteinen zusammenschustern. Klappt wunderbar ;-)
Auch der Code funktioniert so wie beschrieben. ".Value = True" ist hier nicht nötig.
Es kommt nur leider die MsgBox doppelt. Das Problem ist wahrscheinlich, dass ich die CheckBox14 wieder deaktivieren will. Dann durchläuft er ja den Code zwei Mal.
Nur wie kann ich das verhindern?
Viele Grüße
Marco
Anzeige
AW: Doppelte MsgBox verhindern
12.02.2007 13:08:15
Heiko S.
Hallo Martin,
deine Vermutung ist richtig, durch CheckBox14.Value = False wird der Code zweimal durchlaufen.
Abhilfe wenn du mir sagst wo die Checkboxen sind, in einem Tabellenblatt oder auf einer Userform?
Gruß Heiko
PS: Rückmeldung wäre nett !
AW: Doppelte MsgBox verhindern
12.02.2007 13:24:11
Heiko S.
Hallo Martin,
ist übrigens egal wo die Checkboxen sind, Application.EnableEvents wirkt nicht bei Userforms und auch nicht bei OLEObjects in Sheets.
Abhilfe also mit einer zusätzlichen Variable.

Option Explicit
Public bolAuto As Boolean
Private Sub CheckBox14_Click()
If bolAuto Then Exit Sub
With ActiveSheet
If CheckBox6 Then
With CheckBox14
If .Value Then
CheckBox13.Value = False
Range("C13").Value = .Caption
Else
Range("C13").Value = "in Bearbeitung"
End If
End With
Else
bolAuto = True
CheckBox14.Value = False
bolAuto = False
MsgBox "CheckBox6 ist noch nicht angeklickt", vbCritical
'Exit Sub
End If
End With
End Sub

Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: Doppelte MsgBox verhindern
12.02.2007 14:30:56
mtremer
Hallo Heiko,
schade es klappt nicht.
Mit "bolAuto = True/False" klappt es nicht, zumal ich "Option Explicit-Public bolAuto As Boolean" an den Anfang stellen muss und Excel meine Befehle nicht mehr umsetzt...
Andere Idee?
Viele Grüße
Marco
AW: Doppelte MsgBox verhindern
12.02.2007 14:47:59
Heiko S.
Hallo Martin,
bei mir gehts, siehe Beispieldatei.

Die Datei https://www.herber.de/bbs/user/40356.xls wurde aus Datenschutzgründen gelöscht

Wenn dir damit nicht geholfen ist mußt du mal deine Datei hochladen, aber bitte soweit wie möglich auf das Problem reduziert.
Gruß Heiko
PS: Rückmeldung wäre nett !
AW: Doppelte MsgBox verhindern
12.02.2007 16:28:20
mtremer
Hallo Heiko,
habe mal Deine Datei etwas geändert: https://www.herber.de/bbs/user/40362.xls
Problem 1: "Option Explicit - Public bolAuto As Boolean" muss an den Anfang aller Befehle. Dadurch erkennt Excel nicht mehr alle Befehle. Er schimpft bei Range("A13").Value = ClearContents, und bestimmt auch bei allen anderen CheckBoxen.
Problem 2: wenn ich "Option Explicit - Public bolAuto As Boolean" herausnehme, habe ich wieder beide MsgBoxen...
Gibt es hier keine andere Lösung?
Viele Grüße
Marco
PS: ich bin nicht Martin ;-)
Anzeige
AW: Doppelte MsgBox verhindern
12.02.2007 16:41:50
Erich G.
Hallo Marco,
dass VBA bei der Zeile schimpft, ist kein Wunder. Versuchs mal mit
Range("A13").ClearContents
ClearContents ist kein Wert, dem man einer Zelle zuordnen kann, sondern eine Methode, die eine (oder mehrere) Zellen ändert.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Doppelte MsgBox verhindern
12.02.2007 16:49:32
mtremer
Manno!
falsche Knöpfe, voreilige Fragen: Entschuldigung.
Jetzt die richtige Frage:
muss das mit "Option Explicit - Public bolAuto As Boolean" unbedingt sein?
Ansonsten muss ich alle Codes umschreiben :-(
Da hätte ich nur keine Lust zu...
Viele Grüße
Marco
Anzeige
AW: Doppelte MsgBox verhindern
12.02.2007 16:55:27
Erich G.
Hallo Marco,
"Public bolAuto As Boolean" muss sein, wenn du das gewünschte Verhalten der Checkbox erreichen willst.
"Option Explicit" muss nicht unbedingt sein, ist aber sehr zu empfehlen.
Wenn du dir das angewöhnst (und auch in VBA unter Optionen - Editor
die Option "Variablendeklaration erforderlich" aktivierst),
macht das Programmieren bald mehr Lust...
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Doppelte MsgBox verhindern
12.02.2007 17:01:06
mtremer
Hallo Erich,
danke für den Hinweis.
Ich bin aber, wie Du in diesem Thread auch lesen kannst, kein Profi.
Die Codes schreibe ich mir zusammen, einiges hole ich mir von diesem Forum (danke an alle an dieser Stelle), einiges kann ich schon selber ;-)
Wenn ich das jetzt ändere, dann fange ich fast von vorne an. Denn meine riesigen Codes, ja fast schon Programme, bauen darauf auf...
Trotzdem Danke.
Viele Grüße
Marco
Anzeige
AW: Doppelte MsgBox verhindern
12.02.2007 16:42:10
mtremer
sorry, falscher Knofp ;-)
Jetzt nochmal:
Hallo Heiko,
habe mal Deine Datei etwas geändert: https://www.herber.de/bbs/user/40362.xls
Problem 1: "Option Explicit - Public bolAuto As Boolean" muss an den Anfang aller Befehle. Dadurch erkennt Excel nicht mehr alle Befehle. Er schimpft bei Range("A13").Value = ClearContents, und bestimmt auch bei allen anderen CheckBoxen.
Problem 2: wenn ich "Option Explicit - Public bolAuto As Boolean" herausnehme, habe ich wieder beide MsgBoxen...
Gibt es hier keine andere Lösung?
Viele Grüße
Marco
PS: ich bin nicht Martin ;-)
Anzeige
AW: Doppelte MsgBox verhindern
12.02.2007 16:45:52
Erich G.
Hallo Marco,
dass VBA die falsche Codezeile anmeckert, hat überhaupt nichts mit
"Option Explicit - Public bolAuto As Boolean" zu tun.
Du hast eben eine Sache richtig, gleichzeitig aber an anderer Stelle einen Fehler eingebaut.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Doppelte MsgBox verhindern
12.02.2007 16:44:53
Bertram
Hallo Marco (nicht Martin),
hab's nicht im Einzelnen nachvollzogen, aber ändere mal
Range("A13").Value = ClearContents
in
Range("A13").ClearContents
Mit 'Option Explicit' MUSS jede Variable, Konstante etc. deklariert werden und ClearContents funktioniert nur wie angegeben. Ansonsten denkt der Code es handelt sich um eine Variable, die wiederum nicht deklariert wurde.
Gruß
Bertram
Anzeige
AW: Doppelte MsgBox verhindern
12.02.2007 17:03:23
mtremer
Hallo Bertram,
Danke Dir.
Ich habs schon vermutet. So müsste ich alle Codes umbauen (s. Antwort an Heiko).
Da mir das zu viel Arbei ist, muss ich mit einer doppelten MsgBox leben...
Dennoch Danke!
Viele Grüße
Marco
AW: Doppelte MsgBox verhindern
12.02.2007 17:38:12
Heiko S.
Hallo Marco,
also ich seh da kein Problem, wenn man die Tipps von Erich und Bertram richtig umsetzt also aus
Range("A13").Value = ClearContents
dies macht
Range("A13").ClearContents
dann läuft es doch schon.
Und das Option Explicit kannst du rauslassen, auch wenn das nicht richtigem Programmieren entspricht.
https://www.herber.de/bbs/user/40365.xls
Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: Doppelte MsgBox verhindern
12.02.2007 18:32:44
mtremer
Hallo Heiko,
OK, ich werde das mal versuchen.
Ich habe die erste Box umgeschrieben und es klappt!
Wenn die anderen Codes weiterhin funktionieren, dann werde ich das für die ganze Arbeitsmappe umsetzten. Meine grösste Angst war nämlich, dass ich alles umschreiben muss.
Es scheint so zu sein, dass ich das nicht machen muss.
Da ich numal kein Profi bin und die Zusammenhänge noch nicht sofort erkenne, hatte ich so meine Bedenken...
So wie Du das beschrieben hast, werde ich das nun umsetzen.
Ich danke Dir!
Viele Grüße
Marco
AW: Doppelte MsgBox verhindern
12.02.2007 13:11:56
Erich G.
Hallo Marco,
mit EnableEvents = False / True kann man den wiederholten Aufruf verhindern. Versuch maö
Option Explicit
Private Sub CheckBox14_Click()
If CheckBox6 Then
If CheckBox14.Value Then
CheckBox13.Value = False
Range("C13").Value = .Caption
Else
Range("C13").Value = "in Bearbeitung"
End If
Else
Application.EnableEvents = False
CheckBox14.Value = False
Application.EnableEvents = True
MsgBox "CheckBox14_Click: CheckBox6 ist noch nicht angeklickt"
End If
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Doppelte MsgBox verhindern
12.02.2007 14:32:00
mtremer
Hallo Erich,
das klappt so leider nicht.
Trotz Eingabe in den Code gibt es keine Änderung :-(
Andere Idee?
Danke.
Viele grüße
Marco
AW: Doppelte MsgBox verhindern
12.02.2007 16:05:52
Erich G.
Hi Marco,
mein Vorschlag mit EnableEvents war Unfug - das wirkt hier nicht, wie Heiko richtig schrieb.
Heikos Lösung funzt auch bei mir.
Grüße von Erich aus Kamp-Lintfort
AW: Doppelte MsgBox verhindern
12.02.2007 16:38:37
mtremer
Hallo Erich,
ich habe das nochmal versucht.
Trotzdem klappt es nicht.
Die Probleme habe ich gerade bei Heiko geschildert. Er erkennt bei Option Explicit nicht mehr alle Befehle.
Ich weiß leider nicht weiter...
Dennoch Danke.
VIele Grüße
Marco

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige