Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: MsgBox Ok/Cancel. Bei OK wird Code nicht ausgeführt

MsgBox Ok/Cancel. Bei OK wird Code nicht ausgeführt
29.05.2024 16:49:51
Dieter(Drummer)
Guten Tag an alle,

dieser Code fügt aktuelles Datum in markierte Zelle und funktioniert:
Sub Datum()

ActiveCell.Select
SendKeys "^{.}", True
End Sub


Was ist an meinem Code falsch, der mit MsgBox Ja/Nein, bei Ja(OK) des aktuelle Datum einfügen soll? Bei OK kommt kein Datum in Zelle.
Dieser Code:
Sub Test()

MsgBox "Zelle für Datum markiert?", vbOKCancel
If vbCancel = True Then
Exit Sub
Else
ActiveCell.Select
SendKeys "^{.}", True
End If
End Sub


Finde den Fehler nicht und es kommt auch kein Fehlerhinweis:

Mit der Bitte um Hilfe, grüßt
Dieter(Drummer)
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: MsgBox Ok/Cancel. Bei OK wird Code nicht ausgeführt
29.05.2024 16:56:42
ralf_b
du liest keinen Rückgabewert von der Funktion MsgBox aus. if vbCancel = msgbox(.......) then
AW: MsgBox Ok/Cancel. Bei OK wird Code nicht ausgeführt
29.05.2024 17:06:20
Dieter(Drummer)
Danke ralf_b für Rückmeldung.

Habe es jetzt so gemacht und es geht dennoch nicht. Ich denke auch, dass ich da einfach auf dem Schlauch stehe, mit meiner Logik.
Evtl. kannst kannst Du mir noch weiter helfen.
Code:
Sub Test()

MsgBox "Zelle für Datum markiert?", vbOKCancel
If vbCancel = True Then
Exit Sub
Else
If vbOK = True Then
ActiveCell.Select
SendKeys "^{.}", True
End If
End If
End Sub

Gruß, Dieter(Drummer)
Anzeige
AW: MsgBox Ok/Cancel. Bei OK wird Code nicht ausgeführt
29.05.2024 17:14:18
JoWE
Sub Test()

dim myMBoxResult As Integer
myMBoxResult=MsgBox "Zelle für Datum markiert?", vbOKCancel
If myMBoxResult = 2 then
Exit Sub
Else
ActiveCell.Select
SendKeys "^{.}", True
'besser so: ActiveCell= Date
End If
End Sub

Anzeige
AW: MsgBox Ok/Cancel. Bei OK wird Code nicht ausgeführt
29.05.2024 17:36:19
Dieter(Drummer)
Hallo JoWE,

danke für Rückmeldung. Dein Code geht nicht. Diese Zeile wird rot gekennzeichnet, mit Fehlerhinweis "Feler beim kompilieren. Syntaxfehler":
myMBoxResult=MsgBox "Zelle für Datum markiert?", vbOKCancel


Gruß, Dieter(Drummer)
Anzeige
AW: MsgBox Ok/Cancel. Bei OK wird Code nicht ausgeführt
29.05.2024 18:09:14
daniel
Hi
du musst hier Klammern um die Parameter setzen:

myMBoxResult = MsgBox("Zelle für Datum markiert?", vbOKCancel)


nur wenn die Funktion oder der Befehl das einzige in der Programmzeile ist, muss man die Klammern weglassen.
sobald noch irgendwas dazu kommt, braucht man die Klammern.

dh. nur der Msgboxaufruf allein:
MsgBox "Zelle für Datum markiert?", vbOKCancel

sobald was dabei steht, mit Klammern.
egal ob ein Call
Call Msgbox("Hallo Welt")

oder wie hier die Variabelnzuweisung des Rückgabewertes

Gruß Daniel
Anzeige
AW: MsgBox Ok/Cancel. Bei OK wird Code nicht ausgeführt
29.05.2024 18:23:31
JoWE
Ja, Daniel hat natürlich absolut recht. Ich war hier nicht aufmerksam genug, sorry
Gruß Jochen
AW: MsgBox Ok/Cancel. Bei OK wird Code nicht ausgeführt
30.05.2024 09:43:52
Dieter(Drummer)
Danke Daniel,

für deine Erklärung und Rückmeldung, die mir sicher in Folgefällen weiter helfen kann.

Gruß, Dieter(Drummer)
AW: MsgBox Ok/Cancel. Bei OK wird Code nicht ausgeführt
29.05.2024 17:15:04
ralf_b
zu Info vbOK und vbCancel sind feste Werte. die ändern ihren Werte also nicht. Siehe Link
https://learn.microsoft.com/de-de/office/vba/language/reference/user-interface-help/msgbox-constants#msgbox-return-values
Deshalb vergleicht man den Rückgabewert einer Funktion mit diesen Konstanten. Der Vergleich der Konstante mit dem Rückgabewert der Funktion ist dann entweder true oder false.
Anzeige
AW: Danke für Info, ralf_b
29.05.2024 17:26:05
Dieter(Drummer)
Danke ralf_b für Info.

Gruß, Dieter(Drummer)
AW: MsgBox Ok/Cancel. Bei OK wird Code nicht ausgeführt
29.05.2024 17:00:12
daniel
Hi
bei mir wird das Datum eingefügt.
SendKeys ist halt immer problematisch.
hier wäre das Problem, dass du damit in die Bearbeitungszeile gehst und damit weitere Makroaktivität verhinderst.
es sollte zumindest noch ein ENTER hinterher geschickt werden, um die Bearbeitungszeile wieder zu verlassen.
SendKeys kann man auch nicht im Einzstepmodus testen, weil dann das SendKeys auf den VBA-Editor wirkt und nicht auf das Excelblatt
man sollte SendKeys daher nur dann verwenden, wenn es wirklich nicht anders geht.
hier könntest du das heutige Datum auch einfach so einfügen:
ActiveCell.Value = Date


Gruß Daniel


Anzeige
AW: MsgBox Ok/Cancel. Bei OK wird Code nicht ausgeführt
29.05.2024 17:12:31
Dieter(Drummer)
Danke Daniel,

für deinen Hinweis und dem Code, der funktioniert.

Wie ich das jetzt mit MsgBox ja/nein machen kann, weiss ich nicht.
Evtl. kannst du da noch helfen.

Gruß, Dieter(Drummer)

AW: MsgBox Ok/Cancel. Bei OK wird Code nicht ausgeführt
29.05.2024 17:22:34
Kuwer
Hallo Dieter,

Sub Test()

If MsgBox("Zelle für Datum markiert?", vbOKCancel) = vbOK Then
ActiveCell.Value = Date
End If
End Sub
Gruß, Uwe
Anzeige
AW: MsgBox Ok/Cancel. Bei OK wird Code nicht ausgeführt
29.05.2024 17:27:11
daniel
Hi
mit IF
if Msgbox("Datum einfügen", vbOkCancel) = vbOk then

activecell.Value = Date
end if


oder mit Select Case
Select Case Msgbox("Datum einfügen", vbOkCancel)

Case vbOK
activeCell.Value = Date
Case vbCancel
exit Sub
Case else
end Select
Anzeige
AW: Danke an alle, die mir geholfen haben. owT
29.05.2024 17:37:58
Dieter(Drummer)
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige