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

Button => msgbox => makro starten *wie machen*

Forumthread: Button => msgbox => makro starten *wie machen*

Button => msgbox => makro starten *wie machen*
23.05.2014 10:09:59
Nitram
Hey liebe Mitglieder,
ich bin's schon wieder.
Folgendes Möchte ich erreichen:
Auf meinem Tabellenblatt "Auswahl" liegt eine Schaltfläche Formularelement.
Über rechte Maustaste habe ich das folgende Makro verknüpft
Sub Information ()
MsgBox "Achtung, alle gewählten Zubehöranzahlen werden mit OK auf Null zurückgesetzt! " &  _
vbNewLine & _
"" & vbNewLine & _
"Dies muss vor jedem neuen Angebot gemacht werden.", vbExclamation + vbYesNo, "Information"
End Sub
Über diesem Sub liegt folgender Sub:
Option Explicit
Sub SpalteH_Nullen()
'Die Werte im Sheet "Zubehör", Spalte H "Anzahl aus Drehfeld" werden hiermit ab   Zelle H4 bis  _
zum Ende der formatierten Tabelle mit einer Null überschrieben. Da diese Spalte ab H4 die Zellverknüpfungszellen der jeweiligen Drehfelder sind, bewirkt hier das "Generieren" einer Null dafür, dass alle Drehfelder des Sheets Auswahl den 'internenAuswahlstatus (interner Wert)= 0 erhalten. Somit ist gewährleistet, dass vor jedem neuen Angebot jedes Zubehör auf Anzahl Null steht, wenn der Button "Anzahl zurücksetzen" geklickt wird.
With ThisWorkbook.Worksheets("Zubehör")
.Range(.Cells(4, 8), .Cells(.Rows.Count, 8).End(xlUp)) = 0
End With
End Sub
Wenn ich den Button jetzt anklicke, dann kommt die msgbox mit dem Makro "Information()" wie gewollt als Zwischenschritt für den Anwender. Wenn er "Nein" klickt soll sich das Fenster schließen und bei "Ja" soll das Makro "SpalteH_Nullen()" ausgeführt werden.
INFO: Ich habe nur ein Abostroph bei den Kommentarzeilen gestezt und die restlichen rausgelöscht, dass sa sonst irgendwie komisch nach der Vorschau aus.
Ich habe das Archiv hier schon durchsucht, etwas ausprobiert aber noch keinen gewinnbringenden Erfolg herausbringen können.
Hoffe auf eure Hilfe meine Lieben ;-)

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Button => msgbox => makro starten *wie machen*
23.05.2014 10:13:34
Hajo_Zi
Frage das Ergebnis der Msgox ab.
Sub Test()
Dim InMsgBox As Integer
InMsgBox = MsgBox("Wollen Sie den Auftrag wirklich löschen.", vbYesNoCancel + _
vbQuestion, "Löschabfrage ?")
Select Case InMsgBox
Case 6
MsgBox "Ja"
Case 7
MsgBox "Nein"
Case 2
MsgBox "Abbrechen"
End Select
End Sub

Anzeige
AW: Button => msgbox => makro starten *wie machen*
23.05.2014 10:28:08
Nitram
Hallo Hajo, erstmal danke für deine zügige Antwort.
So sieht es jetzt aus. Abbrechen Button brauch ich nicht, wird gleich über den nein Button mit gemacht.
Sub Test()
Dim InMsgBox As Integer
InMsgBox = MsgBox("Achtung, möchten Sie alle gewählten Zubehöranzahlen auf Null zurü _
cksetzen? " & vbNewLine & _
"" & vbNewLine & _
"Dies muss vor jedem neuen Angebot gemacht werden.", vbYesNo + _
vbQuestion, "Information zum Rücksetzen")
Select Case InMsgBox
Case 6
MsgBox "Ja"
Case 7
MsgBox "Nein"
End Select
End Sub

Aber wie sage ich ihm jetzt, das er bei Klick auf ja das Makro SpalteH_Nullen ausführt und bei nein einfach die msgbox schließt?

Anzeige
AW: Button => msgbox => makro starten *wie machen*
23.05.2014 10:32:32
Rudi
Hallo,
Sub Test()
If MsgBox("Achtung, möchten Sie alle gewählten Zubehöranzahlen auf Null zurücksetzen? " _
& vbLf & vbLf _
& "Dies muss vor jedem neuen Angebot gemacht werden.", _
vbYesNo + vbQuestion, _
"Information zum Rücksetzen") = vbYes Then
SpalteH_Nullen
End If
End Sub

Gruß
Rudi

Anzeige
AW: Button => msgbox => makro starten *wie machen*
23.05.2014 10:49:54
Nitram
Danke Rudi, deine Variante ist auch möglich und funktioniert ;-)

AW: Button => msgbox => makro starten *wie machen*
23.05.2014 10:32:44
Hajo_Zi
ersetze MsgBox "Ja" durch SpalteH_Nullen
Gruß Hajo

AW: Button => msgbox => makro starten *wie machen*
23.05.2014 10:45:05
Nitram
korrekt habe es jetzt.
für alle anderen abschließend:

Sub msg_und_SpalteH_Nullen()
Dim InMsgBox As Integer
InMsgBox = MsgBox("Achtung, möchten Sie alle gewählten Zubehöranzahlen auf Null zurü _
cksetzen? " & vbNewLine & _
"" & vbNewLine & _
"Dies muss vor jedem neuen Angebot gemacht werden.", vbYesNo + _
vbQuestion, "Information zum Rücksetzen")
Select Case InMsgBox
Case 6          'wenn ja gedrückt wird, wird Spalte H ab H4 gelöscht
With ThisWorkbook.Worksheets("Zubehör")
.Range(.Cells(4, 8), .Cells(.Rows.Count, 8).End(xlUp)) = 0
End With
Case 7          'wenn nein ausgewählt wird, schließt sich msgbox
End Select
End Sub
Vielen Dank, schön wie schnell unf gut einem hier geholfen wird.
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

MsgBox in Excel: Makros steuern mit Buttons


Schritt-für-Schritt-Anleitung

Um eine MsgBox in Excel zu nutzen, die die Ausführung eines Makros steuert, folge diesen Schritten:

  1. Erstelle ein neues Makro für die MsgBox: Öffne den VBA-Editor (ALT + F11) und füge das folgende Makro hinzu:

    Sub msg_und_SpalteH_Nullen()
        Dim InMsgBox As Integer
        InMsgBox = MsgBox("Achtung, möchten Sie alle gewählten Zubehöranzahlen auf Null zurücksetzen? " & vbNewLine & _
                          "" & vbNewLine & _
                          "Dies muss vor jedem neuen Angebot gemacht werden.", vbYesNo + vbQuestion, "Information zum Rücksetzen")
        Select Case InMsgBox
            Case vbYes
                SpalteH_Nullen
            Case vbNo
                ' Nichts tun, MsgBox schließt sich automatisch
        End Select
    End Sub
  2. Erstelle das Makro für die Nullsetzung der Spalte: Füge das folgende Makro hinzu, welches die Werte in der Spalte H zurücksetzt:

    Sub SpalteH_Nullen()
        With ThisWorkbook.Worksheets("Zubehör")
            .Range(.Cells(4, 8), .Cells(.Rows.Count, 8).End(xlUp)) = 0
        End With
    End Sub
  3. Füge einen Button hinzu: Gehe in dein Excel-Dokument, wähle „Entwicklertools“ und klicke auf „Einfügen“. Wähle einen Button aus und platziere ihn auf deinem Arbeitsblatt.

  4. Verknüpfe den Button mit dem Makro: Klicke mit der rechten Maustaste auf den Button, wähle „Makro zuweisen“ und wähle msg_und_SpalteH_Nullen.

  5. Testen: Klicke auf den Button und teste, ob die MsgBox erscheint. Bei Auswahl von „Ja“ sollte die Spalte H auf 0 zurückgesetzt werden.


Häufige Fehler und Lösungen

  • Problem: Die MsgBox erscheint nicht.

    • Lösung: Stelle sicher, dass das Makro korrekt zugewiesen ist und die Makros in den Excel-Optionen aktiviert sind.
  • Problem: Bei Klick auf „Ja“ passiert nichts.

    • Lösung: Überprüfe, ob das Makro SpalteH_Nullen korrekt definiert ist und keine Fehler enthält.

Alternative Methoden

Anstelle einer MsgBox kannst du auch ein Input-Feld verwenden, um den Benutzer zu fragen, ob er die Aktion durchführen möchte. Hier ist ein einfaches Beispiel:

Sub InputBoxBeispiel()
    Dim Antwort As String
    Antwort = InputBox("Möchten Sie die Werte zurücksetzen? (Ja/Nein)")
    If Antwort = "Ja" Then
        SpalteH_Nullen
    End If
End Sub

Praktische Beispiele

Wenn du das oben genannte Makro auf einem Arbeitsblatt mit dem Namen „Zubehör“ ausführst, wird die Anzahl in Spalte H (ab H4) mit einer Null überschrieben. Dies ist besonders nützlich, wenn du regelmäßig Angebote erstellst und sicherstellen möchtest, dass keine alten Werte bestehen bleiben.


Tipps für Profis

  • Verwende Option Explicit: Dies hilft dir, Fehler zu vermeiden, indem es erfordert, dass alle Variablen deklariert sind.

  • Fehlerbehandlung einfügen: Füge eine Fehlerbehandlungsroutine hinzu, um sicherzustellen, dass das Makro bei unerwarteten Fehlern nicht abstürzt.

  • Makros dokumentieren: Füge Kommentare in deinen Code ein, um die Funktionalität zu erklären und späteren Nutzern das Verständnis zu erleichtern.


FAQ: Häufige Fragen

1. Wie kann ich die MsgBox anpassen? Du kannst die Texte in der MsgBox und die Titelzeile nach deinen Wünschen ändern.

2. Warum funktioniert mein Button nicht? Überprüfe, ob das Makro korrekt zugewiesen ist und ob die Schaltfläche im richtigen Arbeitsblatt platziert ist.

3. Kann ich mehrere Makros mit einer MsgBox steuern? Ja, du kannst die Select Case-Anweisung erweitern, um mehrere Makros basierend auf der Benutzerantwort zu steuern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige