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

Antwort einer MsgBox weiterverarbeiten

Forumthread: Antwort einer MsgBox weiterverarbeiten

Antwort einer MsgBox weiterverarbeiten
12.04.2020 19:27:23
Fredo
https://www.herber.de/bbs/user/136662.xlsm
Hallo Forumsmitglieder,
mein Versuch mich in VBA reinzuarbeiten, scheitert zur Zeit an folgender Aufgabenstellung:
Wenn im Bereich E2:E38 ein Eintrag erfolgt, soll nachgefragt werden, ob der Eintrag als Serientermin behandelt werden soll.
Falls diese Frage mit ja beantwortet wird, soll eine weitere Meldung darauf hinweisen, dass Start- bzw. Enddatum und Intervall des Serientermins eingetragen werden muss. Falls die Frage mit nein beantwortet wird, soll ein Abbruch erfolgen und ganz normal weitergemacht werden.
Was mache ich falsch?
Jeder Hinweis bringt mich weiter. Vielen Dank für eure Mühen und frohe Ostern
der Fredo
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Antwort einer MsgBox weiterverarbeiten
12.04.2020 19:30:47
Hajo_Zi
Hallo Freddo,
Sub Test()
If MsgBox("Wollen Sie den Auftrag wirklich löschen.", vbYesNo + vbQuestion, "Löschabfrage ?" _
) = vbYes Then
MsgBox "Ja"
Else
MsgBox "Nein"
End If
End Sub

AW: Antwort einer MsgBox weiterverarbeiten
12.04.2020 19:43:10
Nepumuk
Hallo Fredo,
im Modul der Tabelle:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("E2:E38")) Is Nothing Then Call SerienTermin
End Sub

Und dann so weiter:
Option Explicit

Public Sub SerienTermin()
    
    If MsgBox("Soll der eingetragene Termin als Serientermin gebucht werden?" & vbLf, _
        vbYesNo Or vbQuestion, "Serientermin?") = vbYes Then
        If MsgBox("Bitte Start- bzw Enddatum sowie den Serienbriefinterval eintragen" & _
            vbLf & _
            vbLf & _
            "1 --> täglich" & _
            vbLf & _
            "2 --> wöchentlich" & _
            vbLf & _
            "3 --> monatlich" & _
            vbLf & _
            "4 --> pro Quartal", vbCritical Or vbOKCancel, " Serienbrief angaben") = vbOK Then
            
            'serientermin
            
        End If
    End If
End Sub

Gruß
Nepumuk
Anzeige
AW: Antwort einer MsgBox weiterverarbeiten
12.04.2020 20:04:29
Fredo
Hallo Nepumuk,
wunderbar, so sollte es sein. Bist du so lieb und kannst mir meine Fehler erklären?
Hallo Hajo,
dein Code ist sehr allgemein gehalten, aber funktioniert einwandfrei. Ich werde den Codeschnipsel in meine Sammlung(die ich gerade aufbaue) aufnehmen.
Vielen Dank an euch beide.
Bleibt gesund und bis demnächst
der Fredo
Anzeige
AW: Antwort einer MsgBox weiterverarbeiten
12.04.2020 20:28:51
Fredo
Hallo Nepumuk,
dein Code funktioniert einwandfrei, aber...
Die Meldung (Frage) erscheint auch, wenn in dem angegebenen Bereich etwas gelöscht wird. Da macht die Meldung aber wenig Sinn.
Kann man die Ausgabe der MsgBox auch so steuern, dass sie nur erscheint, wenn etwas eingetragen wird?
Vielen Dank
der Fredo
Anzeige
AW: Antwort einer MsgBox weiterverarbeiten
13.04.2020 04:57:08
Matthias
Hi
Könnte man auch selbst draufkommen ;-)
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("E2:E38")) Is Nothing Then
If Target  "" Then Call SerienTermin
End If
End Sub
Gruß Matthias
AW: Antwort einer MsgBox weiterverarbeiten
13.04.2020 08:37:33
Fredo
https://www.herber.de/bbs/user/136664.xlsm
Hallo Matthias L.,
vielen Dank für deinen Hinweis und gleichzeitigem Schlag auf den Hinterkopf.
Ich bin gerade dabei im Selbststudium VBA in ganz kleinen Schritten zu erlernen. Deshalb wirkt sicherlich die ein oder andere Frage etwas unbeholfen. Aber damit muss ich leben.
Dein Code ist super einfach und trotzdem genial. Ich stelle immer wieder fest, dass ich zu kompliziert denke und deswegen manche Dinge verdattele.
Ich habe den Code insofern abgeändert, dass die MsgBox erscheint, wenn der Bereich = "" ist. Dadurch ergibt sich aber das Problem, die MsgBox erschein, sobald eine leere Zelle in dem Bereich ausgewählt wird. Die Meldung soll aber erst erscheine, wenn etwas eingetragen wurde. Denke ich wieder zu kompliziert?
Ich bin bereit für den nächsten Nackenschlag. Die geänderte Datei hängt an.
Vielen Dank schon mal
der Fredo
Anzeige
AW: Antwort einer MsgBox weiterverarbeiten
13.04.2020 08:53:09
Matthias
Hi,
Du hast ja auch in der Datei Worksheet_SelectionChange benutzt und nicht Worksheet_Change.
Gruß Matthias
AW: Antwort einer MsgBox weiterverarbeiten
13.04.2020 11:14:02
Fredo
Hallo Matthias L.,
danke, auch diese kleinen Feinheiten werde ich noch lernen.
Vielen Dank für deine Hilfe und bleib gesund
der Fredo
;
Anzeige

Infobox / Tutorial

MsgBox-Antworten in Excel VBA verarbeiten


Schritt-für-Schritt-Anleitung

Um die Antwort einer MsgBox in Excel VBA weiterzuverarbeiten, kannst du die folgende Schritt-für-Schritt-Anleitung befolgen. Diese Anleitung basiert auf dem Feedback aus dem Forum und enthält wichtige Aspekte zur korrekten Nutzung von MsgBoxen.

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Rechtsklicke im Projektfenster auf "VBAProject (Dein Arbeitsblattname)".
    • Wähle Einfügen > Modul.
  3. Füge den Code für die MsgBox hinzu:

    • Kopiere den folgenden Code in das Modul:
    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Range("E2:E38")) Is Nothing Then
           If Target.Value <> "" Then Call SerienTermin
       End If
    End Sub
    
    Public Sub SerienTermin()
       If MsgBox("Soll der eingetragene Termin als Serientermin gebucht werden?", vbYesNo + vbQuestion, "Serientermin?") = vbYes Then
           MsgBox "Bitte Start- bzw. Enddatum sowie den Serienbriefintervall eintragen."
       End If
    End Sub
  4. Teste den Code:

    • Gehe zurück zu deinem Arbeitsblatt.
    • Trage in den Bereich E2:E38 einen Wert ein und beobachte die Reaktion der MsgBox.

Häufige Fehler und Lösungen

  • Fehler: MsgBox erscheint beim Löschen eines Eintrags:

    • Lösung: Achte darauf, dass die MsgBox nur angezeigt wird, wenn tatsächlich ein Wert eingetragen wird. Der obige Code berücksichtigt dies bereits, indem er prüft, ob Target.Value <> "" ist.
  • Fehler: MsgBox wird nicht angezeigt:

    • Lösung: Stelle sicher, dass der Code im richtigen Modul (z.B. im Modul des jeweiligen Arbeitsblatts) platziert ist.

Alternative Methoden

Eine alternative Methode, um die MsgBox-Antworten zu verarbeiten, ist die Verwendung von Application.InputBox, wenn du weitere Eingaben vom Benutzer benötigst. Hier ist ein Beispiel:

Sub BeispielInputBox()
    Dim BenutzerInput As Variant
    BenutzerInput = Application.InputBox("Bitte geben Sie ein Datum ein:", "Datumseingabe", Type:=1)
    If BenutzerInput <> False Then
        MsgBox "Das eingegebene Datum ist: " & BenutzerInput
    End If
End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele, wie du MsgBox-Antworten in einem realen Szenario verwenden kannst:

  1. Bestätigungsabfrage beim Löschen:

    Sub Loeschen()
       If MsgBox("Möchten Sie den Eintrag wirklich löschen?", vbYesNo + vbQuestion) = vbYes Then
           ' Code zum Löschen des Eintrags
       End If
    End Sub
  2. Serienterminabfrage:

    Der oben bereits angegebene Code zeigt, wie man eine MsgBox verwendet, um Benutzereingaben für Serientermine zu verarbeiten.


Tipps für Profis

  • Verwende Konstanten: Definiere Konstanten für die MsgBox-Titel und -Text, um den Code übersichtlicher zu gestalten.
  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um unerwartete Eingaben des Nutzers abzufangen und entsprechende Maßnahmen zu ergreifen.
  • Testen in verschiedenen Excel-Versionen: Stelle sicher, dass dein VBA-Code in verschiedenen Excel-Versionen getestet wird, um Kompatibilität zu garantieren.

FAQ: Häufige Fragen

1. Wie kann ich die MsgBox anpassen?
Du kannst den Text und die Schaltflächen der MsgBox anpassen, indem du die Parameter in der MsgBox-Funktion änderst.

2. Was passiert, wenn ich die MsgBox nicht in einem Workbook-Modul platziere?
Wenn du den Code in ein anderes Modul platzierst, wird der Worksheet-Change-Ereignis nicht ausgelöst, und die MsgBox wird nicht angezeigt.

3. Kann ich mehrere MsgBoxen hintereinander verwenden?
Ja, du kannst mehrere MsgBoxen in einem Sub verwenden, um verschiedene Abfragen zu stellen und Benutzerantworten zu verarbeiten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige