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

Forumthread: Msgbox mit JA NEIN

Msgbox mit JA NEIN
Jockel
Hallo,
ich lade mir Daten in ein Sheet. Danach möchte ich prüfen, ob in der Zelle der Wert mit "OK" beginnt:
If Left$(Range("A1"), 2) = "OK" Then
MsgBox "blabla"
End If
Es soll nun folgendes geprüft werden:
Wenn Zelle A1 nicht mit OK beginnt, soll eine MsgBox aufgehen und fragen, ob es die richtigen Daten sind.
Wenn ich auf NEIN klicke, soll eine weitere msgbox kommen, ob die Daten gelöscht werden sollen. Wenn ich auf JA klicke, soll der Inhalt der Spalte A gelöscht werden, wenn NEIN, dann ein exit sub
Wenn ich in der ersten msgbox (Frage ob richtige Daten) JA klicke, soll es einfach weitergehen, (also einfach diesen Teil verlassen und mein nachfolgender Code geht weiter)
Wie verschachtelt man denn das ?
Danke Jockel
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Msgbox mit JA NEIN
17.08.2010 09:17:43
xr8k2
Hallo Jockel,
versuch mal sowas:
Sub jockel()
If Left$(Range("A1"), 2) = "OK" Then
If MsgBox("Sind´s die richtigen Daten?", vbYesNo) = vbNo Then
If MsgBox("Soll der Zellinhalt gelöscht werden?", vbYesNo) = vbYes Then
Range("A1").ClearContents
End If
End If
End If
End Sub
Gruß,
xr8k2
Anzeige
AW: Msgbox mit JA NEIN
17.08.2010 09:18:59
Matthias
Hallo
Im Prinzip so:


Dim Erg
If UCase(Left(Range("A1"), 2)) = "OK" Then
Erg = MsgBox("richtige Daten ? ", vbYesNo + vbInformation)
If Erg = 6 Then MsgBox "richtige Daten :)"
If Erg = 7 Then MsgBox "falsche Daten :("
End If


Je nach Auswertung kannst Du nun Deinen weiteren Code bei Erg=6
oder den anderen Code bei Erg=7 einbringen.
Gruß Matthias
Anzeige
Dim Erg As vbMsgBoxResult ! Gruß owT
17.08.2010 10:20:51
Luc:-?
:-?
Hey Luc, wo ist der Unterschied ?
17.08.2010 10:59:19
Matthias
Hallo Luc:-?
Option Explicit
Sub ml()
'Dim Erg                  'Wo liegt der Unterschied ? Ja ergibt 6, Nein ergibt 7
Dim Erg As VbMsgBoxResult 'Wo liegt der Unterschied ? Ja ergibt 6, Nein ergibt 7
If UCase(Left(Range("A1"), 2)) = "OK" Then
Erg = MsgBox("richtige Daten ? ", vbYesNo + vbInformation)
MsgBox Erg 'Kontrolle ;o)
If Erg = 6 Then MsgBox "richtige Daten :)"
If Erg = 7 Then MsgBox "falsche Daten :("
End If
End Sub
Nur die Speicherreservierung? Es klappen doch beide Varianten.
Erklärs mir bitte.
Gruß Matthias
Anzeige
Sicher, aber die VBE-Intellisense zeigt dir...
17.08.2010 11:06:38
Luc:-?
…in Var2 alle Wert-Möglichkeiten an, Matthias,
in Var1 aber nicht! ;-)
Gruß Luc :-?
ok, akzeptiert ;o) kwT
17.08.2010 11:08:09
Matthias
Ich verstehe nix.....
18.08.2010 17:21:27
NoNet
Hallo Matthias,
unabhängig von der Typendeklaration die Luc vorgeschlagen hat, empfehle ich, so oft wie möglich mit den in VB(A) enthaltenen vbKonstanten zu arbeiten.
Mit der Syntax If Erg=6 then können wohl die meisten VBA-User kaum etwas anfangen - bzw. man fragt sich, wieso bei einer MsgBox mit den Schaltflächen   plötzlich der Wert 6 resultieren sollte !
Besser lesbar ist die Alternative If Erg=vbYes then
Bei Ja/Nein kann man sich die Werte 6 / 7 evtl. noch merken, aber bei anderen Konstanten sicherlich nicht (z.B. vbCancel, vbAbort, vbRetry : 2 / 3 / 4 - oder vbcritical, vbquestion, vbinformation : 16 / 32 / 64 - oder die Farben : vbRed, vbMagenta, vbGreen : 255 /16711935 / 65280 - etc.)
Ist nur ein unbedeutender Hinweis bzw. eine Bitte von mir, da ich ansonsten "nix verstehe" ;-)
Gruß, NoNet
Anzeige
;o)
19.08.2010 10:38:23
Matthias
Ahhh ... Ich verstehe nix ... !
AW: ;o)
19.08.2010 11:22:31
NoNet

Wobei es noch andere Gründe geben kann,...
20.08.2010 11:55:38
Luc:-?
…das zu tun, NoNet…
Übrigens habe ich Mitte der 90er diese Werte noch manuell addiert - geht auch…! :-)
Gruß+schöWE, Luc :-?
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

MsgBox mit JA NEIN in Excel VBA


Schritt-für-Schritt-Anleitung

Um eine MsgBox in Excel VBA mit den Schaltflächen "JA" und "NEIN" zu erstellen, kannst Du den folgenden Code verwenden:

Sub jockel()
    If Left$(Range("A1"), 2) = "OK" Then
        If MsgBox("Sind's die richtigen Daten?", vbYesNo) = vbNo Then
            If MsgBox("Soll der Zellinhalt gelöscht werden?", vbYesNo) = vbYes Then
                Range("A1").ClearContents
            End If
        End If
    End If
End Sub

Dieser Code prüft, ob der Inhalt von Zelle A1 mit "OK" beginnt. Wenn dies nicht der Fall ist, öffnet sich eine MsgBox, die fragt, ob die Daten richtig sind. Je nach Auswahl wird eine weitere Abfrage angezeigt.


Häufige Fehler und Lösungen

  1. Fehler: MsgBox zeigt keine Schaltflächen an.

    • Lösung: Stelle sicher, dass Du die richtigen Parameter in der MsgBox-Funktion verwendest, z.B. vbYesNo.
  2. Fehler: Der Wert von Erg wird nicht korrekt ausgewertet.

    • Lösung: Verwende die Konstanten vbYes und vbNo, anstatt die Zahlen 6 und 7 direkt zu verwenden. Dies erhöht die Lesbarkeit und Vermeidung von Fehlern.

Alternative Methoden

Eine alternative Methode zur Verwendung von MsgBox ist die Verwendung von InputBox für die Benutzerabfrage. Hier ein Beispiel:

Sub inputBoxExample()
    Dim userResponse As String
    userResponse = InputBox("Bitte gebe 'JA' oder 'NEIN' ein:")

    If UCase(userResponse) = "JA" Then
        MsgBox "Du hast JA gewählt."
    ElseIf UCase(userResponse) = "NEIN" Then
        MsgBox "Du hast NEIN gewählt."
    Else
        MsgBox "Ungültige Eingabe."
    End If
End Sub

Hier wird eine einfache Eingabebox verwendet, um den Benutzer nach einer Antwort zu fragen.


Praktische Beispiele

Hier sind einige weitere Beispiele, die die Verwendung von MsgBox verdeutlichen:

  1. Bestätigung bei Löschoperation:

    If MsgBox("Möchten Sie die Auswahl wirklich löschen?", vbYesNo + vbCritical) = vbYes Then
       Selection.ClearContents
    End If
  2. Begrüßungsnachricht:

    MsgBox "Willkommen in der Excel-Anwendung!", vbInformation

Tipps für Profis

  • Nutze die Konstanten vbInformation, vbExclamation und vbCritical, um den Typ der MsgBox anzupassen.
  • Kombiniere MsgBox mit If-Statements für logische Abfragen, um Entscheidungen basierend auf Benutzereingaben zu treffen.
  • Verwende Application.ScreenUpdating = False, um die Bildschirmaktualisierung während umfangreicher Abfragen zu verbessern.

FAQ: Häufige Fragen

1. Wie kann ich die Schaltflächen in einer MsgBox anpassen? Du kannst die Schaltflächen anpassen, indem Du verschiedene vb-Konstanten wie vbYesNo, vbOKCancel usw. kombinierst.

2. Was sind die Rückgabewerte von MsgBox? Die Rückgabewerte sind Konstanten wie vbYes (6), vbNo (7), vbCancel (2), usw. Es wird empfohlen, die Konstanten anstelle der numerischen Werte zu verwenden.

3. Wie kann ich eine MsgBox mit einem benutzerdefinierten Titel erstellen? Füge einfach den Titel als zweiten Parameter in die MsgBox-Funktion ein:

MsgBox "Deine Nachricht", vbYesNo, "Dein Titel"

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