Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Ppt MsgBox ohne Programm anzuhalten

Forumthread: VBA Ppt MsgBox ohne Programm anzuhalten

VBA Ppt MsgBox ohne Programm anzuhalten
04.08.2014 15:01:57
Florian
Hallo alle zusammen,
ich habe ein Makro geschrieben mit welchem ich automatisiert aus Excel eine PowerPoint Präsentation erstelle und diese anschließend abspeichere. Bevor ich speichere habe ich eine msgbox vbYesNo in welcher der Nutzer bestätig, ob er die generierte Präsentation so abspeichern möchte.
Ungünstig: Meine Nutzer können sich die Präsentation nicht anschauen, da mir die MsgBox die Präsentation sperrt.
Gibt es eine Möglichkeit die Box anzuzeigen und dabei durch die Präsentation scrollen zu können?

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Ppt MsgBox ohne Programm anzuhalten
04.08.2014 15:11:09
Oberschlumpf
hmmm...
Hi Florian,
VBA gut?
Da solltest eigtl auch du wissen, dass eine MsgBox IMMER ein Makro so lange "anhält", bis die MsgBox verschwunden ist.
Lösen könntest du dein Problem, in dem du mit Hilfes eines Userform(ulares) eine MsgBox "nachbaust" und diese dann nonmodular darstellen lässt.
Hilfts?
Ciao
Thorsten

Anzeige
AW: VBA Ppt MsgBox ohne Programm anzuhalten
04.08.2014 15:13:32
Hendryk
Hallo,
die Eigenschaft, die du suchst heißt "ShowModal = False".
Leider besitzt die Message Box diese Eigenschaft nicht.
Programmier dir ein eigenes kleines Formular, dann sollte das kein Problem sein.
Viele Grüße
Hendryk

AW: VBA Ppt MsgBox ohne Programm anzuhalten
05.08.2014 08:03:50
Florian
Hey, danke für eure Antworten! Ich hatte die Hoffnung mir den Umweg über ein UserForm ersparen zu können, aber dann werde ich es wohl so lösen dürfen.
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

VBA Ppt MsgBox ohne Programm anzuhalten


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und aktiviere den VBA-Editor.
    Drücke ALT + F11, um den VBA-Editor zu starten.

  2. Erstelle ein neues Modul.
    Rechtsklicke im Projektfenster auf "VBAProject (DeinArbeitsblatt)" und wähle "Einfügen" > "Modul".

  3. Füge den folgenden Code ein:
    Dieser Code erstellt eine PowerPoint-Präsentation und zeigt eine nicht-blockierende MsgBox an.

    Sub ErstellePräsentation()
       Dim pptApp As Object
       Dim pptPräsentation As Object
    
       Set pptApp = CreateObject("PowerPoint.Application")
       Set pptPräsentation = pptApp.Presentations.Add
    
       ' Hier fügst du Folien und Inhalte hinzu
    
       ' UserForm zur Anzeige der Nachricht
       UserForm1.Show vbModeless
    
       ' Speichern der Präsentation
       pptPräsentation.SaveAs "DeinPfad\DeinePräsentation.pptx"
       pptApp.Quit
    End Sub
  4. Erstelle ein UserForm.
    Gehe zu "Einfügen" > "UserForm" und füge ein Label und zwei Schaltflächen für "Ja" und "Nein" hinzu.

  5. Setze die ShowModal-Eigenschaft auf False.
    Damit die UserForm nicht blockiert, stelle sicher, dass die Eigenschaft ShowModal auf False gesetzt ist.


Häufige Fehler und Lösungen

  • MsgBox blockiert weiterhin das Programm:
    Stelle sicher, dass du ein UserForm verwendest und die ShowModal-Eigenschaft korrekt eingestellt ist.

  • Fehler beim Erstellen der PowerPoint-Präsentation:
    Überprüfe, ob PowerPoint auf deinem Computer installiert ist und die Verweise im VBA-Editor korrekt gesetzt sind.


Alternative Methoden

Du kannst auch andere Formen der Benutzereingabe in VBA verwenden, wie z.B. InputBox, die keine Interaktion mit UserForms erfordert, aber weniger flexibel ist. Eine andere Möglichkeit wäre, den Einsatz von Excel-Daten zur Steuerung der Präsentation in Betracht zu ziehen, anstatt eine interaktive MsgBox zu verwenden.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du das UserForm zur Bestätigung in dein Makro integrieren kannst:

' UserForm1 Code
Private Sub CommandButtonJa_Click()
    ' Aktion für Ja
    Me.Hide
End Sub

Private Sub CommandButtonNein_Click()
    ' Aktion für Nein
    MsgBox "Die Präsentation wurde nicht gespeichert."
    Me.Hide
End Sub

In diesem Beispiel wird der Benutzer gefragt, ob er die Präsentation speichern möchte. Die UserForm zeigt die Optionen an, ohne das Programm anzuhalten.


Tipps für Profis

  • Verwende Application.ScreenUpdating = False:
    Deaktiviere die Bildschirmaktualisierung während des Programmablaufs, um die Leistung zu verbessern.

  • Teste dein UserForm intensiv:
    Stelle sicher, dass es in verschiedenen Szenarien funktioniert und keine unerwarteten Fehler auftreten.

  • Halte deine VBA Info dokumentiert:
    Dokumentiere deinen Code, um anderen (oder dir selbst) das Verständnis zu erleichtern.


FAQ: Häufige Fragen

1. Warum kann ich die MsgBox nicht anpassen?
Die standardmäßige MsgBox in VBA hat keine Eigenschaften, die es dir ermöglichen, sie nonmodular zu machen. Daher ist ein UserForm die beste Lösung.

2. Gibt es eine Möglichkeit, die MsgBox ohne Bestätigung zu verwenden?
Ja, indem du ein UserForm erstellst, kannst du die Benutzeroberfläche so gestalten, dass sie nicht blockierend ist, was bei der Verwendung der MsgBox nicht möglich ist.

3. Welche Excel-Version benötige ich?
Das Beispiel funktioniert in Excel-Versionen, die VBA unterstützen, einschließlich Excel 2010 und neuer.

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