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

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Infopopup ohne ok Bestätig.für Dauer d.Ausführung
von: DonFiala
Geschrieben am: 28.02.2005 10:20:28
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

Bild

Betrifft: AW: Infopopup ohne ok Bestätig.für Dauer d.Ausführ
von: Matthias G
Geschrieben am: 28.02.2005 10:27:25
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
Bild

Betrifft: AW: Infopopup ohne ok Bestätig.für Dauer d.Ausführ
von: DonFiala
Geschrieben am: 28.02.2005 10:53:01
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
Bild

Betrifft: auch ohne UserForm möglich...
von: UweD
Geschrieben am: 28.02.2005 10:51:56
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
Bild

Betrifft: AW: auch ohne UserForm möglich...
von: DonFiala
Geschrieben am: 28.02.2005 13:21:13
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
Bild

Betrifft: AW: auch ohne UserForm möglich...
von: DonFiala
Geschrieben am: 28.02.2005 14:18:56
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
Bild

Betrifft: AW: auch ohne UserForm möglich...
von: Matthias G
Geschrieben am: 28.02.2005 21:22:43
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
 Bild

Beiträge aus den Excel-Beispielen zum Thema "1.) Zeitstempel & 2.) Pivot; keine weiteren Spalt "