Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Infopopup ohne ok Bestätig.für Dauer d.Ausführung

Forumthread: Infopopup ohne ok Bestätig.für Dauer d.Ausführung

Infopopup ohne ok Bestätig.für Dauer d.Ausführung
28.02.2005 10:20:28
DonFiala
Hallo,
brauche ein Infopopup (MsgBox), das, sobald mein Makro ausgeführt wird, anstatt der Sanduhr solange zu sehen ist, bis das Makro fertig ist und sich dann wieder dezent verdrückt! Da das Makro je nach Auswahl unterschiedlich lang läuft, ist ein festgelegter "Countdown" nicht so ideal! Wer weiss Rat?
Vielen Dank, Gruss michi
Anbei mein Makro:

Sub SpeichernManuell()
ActiveSheet.Copy
ActiveSheet.Unprotect "Password"
HIER DENKE ICH MÜSSTE DAS POPUPREIN!
Dim Zelle As Range
'erste Verknüpfung finden
Set Zelle = Cells.Find(What:="]", LookIn:=xlFormulas)
If Not Zelle Is Nothing Then
Do
Zelle = Zelle.Value
Set Zelle = Cells.FindNext(Zelle)
Loop While Not Zelle Is Nothing
End If
' Speicherprogramm
Dim DName As String, Dateiname As String, Pfad As String
Pfad = Range("U2")
DName = Range("R2")
Dateiname = Pfad & "\" & DName & Format(Range("G7"), "YYYY.MMM") & ".xls"
' Tagesdatum als "Jahr.Monat.Tag" wegen Exploreransicht!
ActiveWorkbook.SaveAs Filename:=Dateiname
MsgBox "Datei wurde erfolgreich unter dem Namen " & ActiveWorkbook.Name & " gespeichert."
ActiveWorkbook.Close
End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Infopopup ohne ok Bestätig.für Dauer d.Ausführ
28.02.2005 10:27:25
Matthias
Hallo DonFiala,
erstelle ein Userform mit der nötigen Info drin und der Eigenschaft ShowModal=False.
Dann, um das UF anzuzeigen:
UserForm1.Show
DoEvents
Um es auszublenden
Unload UserForm1
Um das Schließen mit dem X oben rechts zu verhindern, noch diesen Code ins Userform-Modul:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then Cancel = True
End Sub
Gruß Matthias
Anzeige
AW: Infopopup ohne ok Bestätig.für Dauer d.Ausführ
28.02.2005 10:53:01
DonFiala
Hallo
Wie erstell ich denn ein Userform,
wie gesagt bin in VBA sehr schwach und suche mir alles immer nur sehr mühsam zusammen!
Gruss michi
auch ohne UserForm möglich...
UweD
Hallo
hier ein Beispiel ohne Userform.

Sub ZeitMsgbox()
Dim WsShell, Rück%
Set WsShell = CreateObject("WScript.Shell")
Rück = WsShell.Popup("Dieser Text verschwindet selbst !!!", 5 _
, "Überschrift ...")
' Die 5 in der letzten Zeile gibt die Dauer der Öffnung an.
' Rück ist -1 wenn keine Taste gedrückt wurde
' Rück ist 1 wenn OK gedrückt wurde
End Sub

Gruß UweD
Anzeige
AW: auch ohne UserForm möglich...
28.02.2005 13:21:13
DonFiala
Hallo Uwe,
das Makro klappt ganz gut, es verwindet von selbst!
Allerdings einen kleinen Schönheitsfehler hat das ganze. Bin mir relativ sicher, das während des Popups mein anderes Makro ruht, d.h. das Pop Up verscwhindet und dann dauert es noch ne ganze Zeit lang bis das Makro fertig ist, d.h. die Anweisungen werden nacheinander abgearbeitet. Ich wollte es urspünglich so, das das Infopopup verschwindet sobald die Berechnung durchgefüht ist... Hab ich evtl. nen Fehler in der Reihenfolge?
Vielen Dank aber schonmal! Gruss michi
Anzeige
AW: auch ohne UserForm möglich...
28.02.2005 14:18:56
DonFiala
Hallo Uwe,
das Makro klappt ganz gut, es verwindet von selbst!
Allerdings einen kleinen Schönheitsfehler hat das ganze. Bin mir relativ sicher, das während des Popups mein anderes Makro ruht, d.h. das Pop Up verscwhindet und dann dauert es noch ne ganze Zeit lang bis das Makro fertig ist, d.h. die Anweisungen werden nacheinander abgearbeitet. Ich wollte es urspünglich so, das das Infopopup verschwindet sobald die Berechnung durchgefüht ist... Hab ich evtl. nen Fehler in der Reihenfolge?
Vielen Dank aber schonmal! Gruss michi
Anzeige
AW: auch ohne UserForm möglich...
28.02.2005 21:22:43
Matthias
Hallo DonFiola,
...womit wir wieder beim nichtmodalen Userform wären. Das ist einfach zu handhaben und sieht auch gut aus, wenn man die Titelleiste mit diesem Code im Userform ausblendet:
Option Explicit
' Userform mit einem CommandButton (CoEnde), um die Userform
' zu schließen. Mit rechtsklick auf die Maus in der Userform
' wird diese ebenfalls geschlossen. Abschnitt:
' "Unload Speichermeldung ' Zum schließen, beim ausprobieren."
' von GraFri
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, _
ByVal wCmd As Long) As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As _
Long, lpRect As RECT) As Long
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lparam As Any) As Long
Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, _
ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, _
ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private FensterRegion&, Region&
Private Hauptfensternummer&, Clientfensternummer&
Private dummy As Long
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Const GW_CHILD = 5
Private Const WM_NCLBUTTONDOWN = &HA1
Private Const HTCAPTION = 2
Private Sub UserForm_Initialize()
Call FensterOhneKopf
End Sub
Sub FensterOhneKopf()
Dim Abmessung  As RECT
Dim Abmessung1 As RECT
Dim Pos1x&, Pos1y&, Pos2x&, Pos2y&
If FensterRegion <> 0 Then Exit Sub
SpeicherMeldung.BorderStyle = fmBorderStyleNone
Call Fensternummer(SpeicherMeldung, Abmessung, Abmessung1)
Pos1x = 0
Pos1y = (Abmessung1.Top - Abmessung.Top)
Pos2x = Abmessung.Right - Abmessung.Left
Pos2y = Abmessung.Bottom - Abmessung.Top
Region = CreateRectRgn(Pos1x, Pos1y, Pos2x, Pos2y)
FensterRegion = SetWindowRgn(Hauptfensternummer, Region, True)
End Sub
'Fensterhandles und Infos über Fenster holen
Private Sub Fensternummer(Form As Object, Abmessung As RECT, Abmessung1 As RECT)
Dim Fenstername$, Suchstring$
Suchstring = "UserForm ohne Titelzeile"
Fenstername = Form.Caption
Form.Caption = Suchstring
Hauptfensternummer = FindWindow(vbNullString, Suchstring)
Form.Caption = Fenstername
Clientfensternummer = GetWindow(Hauptfensternummer, GW_CHILD)
dummy = GetWindowRect(Hauptfensternummer, Abmessung)
dummy = GetWindowRect(Clientfensternummer, Abmessung1)
End Sub
Private Sub UserForm_Activate()
Label1.Caption = "Bitte warten..."
DoEvents
End Sub

(Der Code ist nicht von mir, den hab' ich hier aus dem Forum.)
Gruß Matthias
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Infopopup in Excel VBA ohne Bestätigung


Schritt-für-Schritt-Anleitung

Um ein Infopopup in Excel VBA zu erstellen, das ohne Bestätigung angezeigt wird, kannst du die folgenden Schritte befolgen:

  1. Erstelle ein neues Makro: Öffne den VBA-Editor in Excel (ALT + F11) und füge ein neues Modul hinzu.

  2. Füge den folgenden Code ein: Der folgende Code zeigt ein Popup-Fenster an, das nach einer bestimmten Zeit automatisch verschwindet.

    Sub ZeitMsgbox()
       Dim WsShell As Object
       Set WsShell = CreateObject("WScript.Shell")
       WsShell.Popup "Dieser Text verschwindet selbst !!!", 5, "Überschrift ..."
    End Sub

    In diesem Beispiel ist 5 die Zeit in Sekunden, wie lange das Popup sichtbar bleibt.

  3. Makro ausführen: Führe das Makro aus, um das Popup zu testen.


Häufige Fehler und Lösungen

  • Problem: Das Popup verschwindet nicht rechtzeitig.

    • Lösung: Stelle sicher, dass der Wert in WsShell.Popup korrekt gesetzt ist, um die gewünschte Zeit anzugeben.
  • Problem: Popup wird nicht angezeigt.

    • Lösung: Überprüfe, ob die Makros in Excel aktiviert sind. Gehe zu Datei -> Optionen -> Trust Center -> Einstellungen für das Trust Center -> Makroeinstellungen.

Alternative Methoden

Eine alternative Methode, um ein Popup ohne Bestätigung zu erstellen, ist die Verwendung eines UserForms:

  1. Erstelle ein UserForm: Im VBA-Editor, füge ein neues UserForm hinzu.
  2. Setze die Eigenschaften: Stelle die Eigenschaft ShowModal auf False.
  3. Füge Text hinzu: Füge ein Label hinzu, das die gewünschte Nachricht enthält.
  4. Zeige das UserForm an:

    UserForm1.Show
    DoEvents
    Unload UserForm1

Diese Methode erlaubt dir, visuell ansprechendere Informationen anzuzeigen.


Praktische Beispiele

Hier sind einige praktische Beispiele zur Verwendung von VBA-Infoboxen:

  • Einfaches Popup:

    Sub EinfachesPopup()
       MsgBox "Operation wird durchgeführt...", vbInformation, "Info"
    End Sub
  • Popup mit einer benutzerdefinierten Dauer:

    Sub BenutzerdefiniertesPopup()
       Dim WsShell As Object
       Set WsShell = CreateObject("WScript.Shell")
       WsShell.Popup "Bitte warten, Operation läuft!", 3, "Warten..."
    End Sub

Tipps für Profis

  • Verwende DoEvents: Dies ermöglicht Excel, andere Aufgaben während der Anzeige des Popups zu verarbeiten.

  • Gestalte das UserForm ansprechend: Nutze Farben und Layouts, um die Benutzererfahrung zu verbessern.

  • Vermeide unnötige Popups: Setze Infoboxen nur ein, wenn sie wirklich notwendig sind, um die Benutzer nicht zu überfluten.


FAQ: Häufige Fragen

1. Wie kann ich ein Popup ohne VBA erstellen? Du kannst in Excel auch die bedingte Formatierung oder Datenvalidierung nutzen, um einfache Benachrichtigungen anzuzeigen.

2. Was ist der Unterschied zwischen MsgBox und Popup? Eine MsgBox erfordert eine Benutzerinteraktion, während ein Popup (wie WScript.Shell.Popup) automatisch nach einer bestimmten Zeit verschwindet.

3. Kann ich das Popup anpassen? Ja, du kannst den Text, die Dauer und die Schaltflächen in der Popup-Option anpassen, um es an deine Bedürfnisse anzupassen.

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