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

Forumthread: makro starten aus msgbox

makro starten aus msgbox
24.07.2007 15:13:00
HumanaryStew
ihr habt mir heute schon mal sehr geholfen (https://www.herber.de/forum/archiv/888to892/t890047.htm), jetzt habe ich noch eine ergänzende frage dazu.
nach dem umsetzen des werts in der zelle, soll eine msgbox angezeigt werden. wird dort "nein" geklickt => keine weiteren schritte. wird "ja" gewählt => start von makro org.
derzeit hab ich es so, aber es funktioniert einfach nicht... hilfe!

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$33" And Target.Value = "Ja" Then Exit Sub
If Mldg = MsgBox("Möchten Sie eine Folgeerfassung durchführen?", vbYesNo + vbQuestion, " _
Folgeerfassung") = vbYes Then Call ORG
End Sub


danke!
lg,
michel

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: makro starten aus msgbox
24.07.2007 15:22:00
Harry
Evtl. so?

If MsgBox("Möchten Sie eine Folgeerfassung durchführen?", vbYesNo + vbQuestion, " _
Folgeerfassung") = vbYes Then Call ORG


Gruß
Harry

TAUSEND DANK:
24.07.2007 15:29:54
HumanaryStew
dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank dank

Anzeige
AW: makro starten aus msgbox
24.07.2007 15:23:16
Matthias
Hallo
  • If Target.Address = "$B$33" And Target.Value = "Ja" Then Exit Sub

  • Du löst doch bei Ja ein Exit Sub aus!
    Also ist ab dieser Zeile Feierabend für die Prozedur!
    Userbild

    Anzeige
    AW: makro starten aus msgbox
    24.07.2007 15:29:42
    Beate
    Hallo,
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$B$33" And Target.Value = "Ja" Then Exit Sub
    Msg = "Möchten Sie eine Folgeerfassung durchführen?"
    Ans = MsgBox(Msg, vbQuestion + vbYesNo)
    Select Case Ans
        Case vbYes
            ORG
        Case vbNo
            Cancel = True
    End Select
    End Sub


    Gruß,
    Beate

    Anzeige
    AW: makro starten aus msgbox
    24.07.2007 15:31:00
    HumanaryStew
    funktioniert auch einwandfrei! danke, liebe beate! :)

    oje! :(
    24.07.2007 15:41:32
    HumanaryStew
    die msgbox kommt jetzt auch, wenn ich im feld b31 oder b29 die daten ändere und das feld b33 die ganze zeit unberührt "ja" anzeigt... woran kann das liegen?
    lg,
    michael

    AW: oje! :(
    24.07.2007 15:45:36
    Beate
    Das liegt an deiner if-Bedingung.
    So kommt die Box nur, wenn in B33 "Ja" eingegeben wird:
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$B$33" And Target.Value = "Ja" Then
        Msg = "Möchten Sie eine Folgeerfassung durchführen?"
        Ans = MsgBox(Msg, vbQuestion + vbYesNo)
        Select Case Ans
            Case vbYes
                ORG
            Case vbNo
                Cancel = True
        End Select
    End If
    End Sub



    Anzeige
    jetzt! :)
    24.07.2007 15:53:00
    HumanaryStew
    danke beate!
    zum glück gibt es dinge, die ich besser kann als (vba-)programmieren! :)
    lg aus wien,
    michael
    ;
    Anzeige

    Infobox / Tutorial

    Makro starten aus MsgBox in Excel


    Schritt-für-Schritt-Anleitung

    Um ein Makro aus einer MsgBox zu starten, kannst du die folgende Schritt-für-Schritt-Anleitung befolgen:

    1. Öffne den VBA-Editor:

      • Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
    2. Füge einen neuen Code ein:

      • Wähle das entsprechende Arbeitsblatt im Projekt-Explorer aus (z.B. Sheet1).
      • Kopiere den folgenden Code und füge ihn in das Code-Fenster ein:
      Private Sub Worksheet_Change(ByVal Target As Range)
         If Target.Address = "$B$33" And Target.Value = "Ja" Then
             Msg = "Möchten Sie eine Folgeerfassung durchführen?"
             Ans = MsgBox(Msg, vbQuestion + vbYesNo)
             Select Case Ans
                 Case vbYes
                     Call ORG
                 Case vbNo
                     ' Nichts tun
             End Select
         End If
      End Sub
    3. Speichere deine Änderungen und schließe den VBA-Editor.

    4. Teste das Makro:

      • Ändere den Wert in Zelle B33 auf "Ja". Es sollte nun die MsgBox erscheinen.

    Häufige Fehler und Lösungen

    • Fehler 1: Das Makro wird nicht ausgelöst, wenn "Ja" eingegeben wird.

      • Lösung: Stelle sicher, dass die Überprüfung If Target.Address = "$B$33" And Target.Value = "Ja" korrekt ist. Wenn du Exit Sub in der Bedingung hast, wird das Makro vorzeitig beendet.
    • Fehler 2: Die MsgBox wird auch bei Änderungen in anderen Zellen angezeigt.

      • Lösung: Überprüfe, dass die Bedingung nur für Target.Address von B33 gilt. Das bedeutet, dass die MsgBox nur angezeigt wird, wenn B33 verändert wird.

    Alternative Methoden

    Eine alternative Methode, um ein Makro zu starten, ist die Verwendung eines Buttons in Excel:

    1. Füge einen Button hinzu:

      • Gehe zu Entwicklertools > Einfügen und wähle einen Button.
    2. Weise das Makro zu:

      • Klicke mit der rechten Maustaste auf den Button und wähle Makro zuweisen..., um das gewünschte Makro (z.B. ORG) zu verknüpfen.
    3. Teste den Button: Klicke auf den Button, um zu sehen, ob das Makro wie gewünscht ausgeführt wird.


    Praktische Beispiele

    Hier sind einige praktische Beispiele, wie das Makro in verschiedenen Szenarien genutzt werden kann:

    • Beispiel 1: Du möchtest eine weitere Erfassung starten, wenn der Status auf "Ja" gesetzt wird.
    • Beispiel 2: Du kannst die MsgBox anpassen, um verschiedene Optionen anzubieten, indem du zusätzliche Cases im Select Case-Block hinzufügst.

    Tipps für Profis

    • Fehlerbehandlung: Füge eine Fehlerbehandlung in dein Makro ein, um Probleme elegant zu lösen. Beispiel:

      On Error GoTo ErrorHandler
      ' Dein Code hier
      Exit Sub
      ErrorHandler:
        MsgBox "Ein Fehler ist aufgetreten: " & Err.Description
    • Variablen verwenden: Verwende Variablen für häufig genutzte Werte, um deinen Code lesbarer zu machen.


    FAQ: Häufige Fragen

    1. Frage: Warum wird das Makro nicht ausgeführt, wenn ich "Ja" wähle? Antwort: Überprüfe, ob die Bedingung in If Target.Address = "$B$33" And Target.Value = "Ja" korrekt ist. Das Makro wird nur ausgeführt, wenn diese Bedingungen zutreffen.

    2. Frage: Wie kann ich die MsgBox anpassen? Antwort: Du kannst den Text in der MsgBox ändern, indem du den Msg-Variablenwert anpasst, z.B. Msg = "Möchten Sie fortfahren?".

    3. Frage: Ist dieser Code in allen Excel-Versionen kompatibel? Antwort: Ja, der Code sollte in den meisten Excel-Versionen funktionieren, die VBA unterstützen, insbesondere in Excel 2010 und später.

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige