Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1008to1012
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

UserForm unload fehlerhaft nach Application.Wait

UserForm unload fehlerhaft nach Application.Wait
18.09.2008 09:01:00
Andreas
Hallo Herber Fans,
ich habe in der letzten Zeit wieder ein wenig mehr mit UserForms experimentiert und festgestellt, daß sie ein sehr gutes Mittel sind, auch graphisch dem User klar zu machen, was gerade passiert und was etwaige Implikationen sind.
Ich hänge nun aber an einem Problem fest. Bei Öffnung einer Arbeitsmappe wird eine UserForm aufgerufen, die den Speicherpfad der Arbeitsmappe prüft. Entspricht dieser der Vorgabe, kommt ein grüner Haken, ansonsten das vbExclamation Symbol.
Was genau passieren soll:
Die Userform kommt, in ihrer Caption wird über Application.Wait mit 0,75 Sekunden die Caption gewechselt, um einen Fortschritt zu simulieren:
Checking File Directory Validity...
Checking File Directory Validity......
Checking File Directory Validity..........
Dann kommt das Prüfungsergebnis, das Bild einer positiven Prüfung bleibt nur 2 Sekunden bestehen. Eine negative Prüfung 6 Sekunden.
Dann soll die UserForm verschwinden.
Das Problem ist nun, daß der simulierte Fortschritt in der Caption nicht korrekt dargestellt wird. Der Code läuft, VBA Editor zeigt den Code als „aktiv“ an und dann auf einmal ist die UserForm schon in voller Pracht zu sehen – ohne simulierten Fortschritt.
Wenn ich mit die Einstellungen UserForm_Activate/ bzw. Initalize variiert habe, dann kam zwar der simulierte Fortschritt in der Caption, die UserForm hat sich jedoch nicht „unloaded“. Ich habe de facto die Application.Wait Anweisungen für die Caption und für die Bilder (und dann unload) nie korrekt zusammen darstellen können. Immer nur entweder/ oder.
https://www.herber.de/bbs/user/55485.xls
Wer von Euch hat eine Idee, woran das liegen kann? Vielen Dank für Anregungen von Euch aus dem Forum.
Grüße, Andreas

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UserForm unload fehlerhaft nach Application.Wait
18.09.2008 09:14:00
Matthias
Hallo Andreas,
während der Intialize-Prozedur wird das UF noch nicht angezeigt.
Packe also alles ins Activate-Ereignis und schreibe zwischen .Caption = ... und Application.Wait ... noch ein DoEvents:

Private Sub UserForm_Activate()
TestPath = "Zu TestZwecken von jedem Varirierbar"
'Application.ScreenUpdating = True
'Label1.TextAlign = fmTextAlignCenter
Image1.Visible = False
Image2.Visible = False
Image2.BorderColor = 0
Label2.TextAlign = fmTextAlignCenter
Label2.Left = (frmFilePathValidity.Width - Label2.Width) / 2
'Einen Counter in der UF Intialize zu haben UND die UF TimeSerial gesteuert unloaden zu lassen  _
ist nicht kombinierbar.
'Entweder hat das zeitesteuerte Unload (muß anscheinend in Activate liegen) oder der Initialize  _
Code funktioniert. Problematisch zu kombinieren
frmFilePathValidity.Caption = "Checking File Directory Validity"
DoEvents
Application.Wait Now + TimeSerial(0, 0, 0.75)
frmFilePathValidity.Caption = "Checking File Directory Validity..."
DoEvents
Application.Wait Now + TimeSerial(0, 0, 0.75)
frmFilePathValidity.Caption = "Checking File Directory Validity......"
DoEvents
Application.Wait Now + TimeSerial(0, 0, 0.75)
frmFilePathValidity.Caption = "Checking File Directory Validity.........."
DoEvents
Application.Wait Now + TimeSerial(0, 0, 0.75)
'Label1.Caption = "Checking File Directory Validity."
'Application.Wait Now + TimeSerial(0, 0, 1)
'Label1.Caption = "Checking File Directory Validity..."
'Application.Wait Now + TimeSerial(0, 0, 1)
'Label1.Caption = "Checking File Directory Validity....."
Debug.Print ThisWorkbook.Path
If ThisWorkbook.Path = TestPath Then
Beep
Image1.Visible = True
'    Image1.BorderColor = 3
Image1.BorderStyle = fmBorderStyleNone
Image1.Top = (frmFilePathValidity.Height * 0.05)
Image1.Left = (frmFilePathValidity.Width / 2) - (Image1.Width / 2)
Image1.PictureAlignment = fmPictureAlignmentCenter
'    Label2.Top = (frmFilePathValidity.Height * 0.05)
Label2.Left = (frmFilePathValidity.Width / 2) - (Label2.Width / 2)
Label2.WordWrap = True
Label2.Top = (frmFilePathValidity.Height * 0.05) + (Image1.Height * 0.05)
Label2.Caption = "File is from correct directory!"
Label2.Font.Bold = True
TimSerialSecond = 2
'    Application.Wait Now + TimeSerial(0, 0, 3)
'    Unload Me
Else
Beep
Image2.Visible = True
Image2.BorderStyle = fmBorderStyleNone
Image2.Top = (frmFilePathValidity.Height * 0.05)
Image2.Left = (frmFilePathValidity.Width / 2) - (Image2.Width / 2)
Image2.PictureAlignment = fmPictureAlignmentCenter
Label2.Font.Bold = True
'    Label2.Top = (frmFilePathValidity.Height * 0.05)
Label2.Left = (frmFilePathValidity.Width / 2) - (Label2.Width / 2)
Label2.WordWrap = True
Label2.Top = (frmFilePathValidity.Height * 0.05) + (Image2.Height * 1.05)
Label2.Caption = "You are using the file not on the shared drive:" & vbLf & _
TestPath & vbLf & _
"This may lead to data inconsistencies in Datenpflege."
TimSerialSecond = 6
End If
Application.Wait Now + TimeSerial(0, 0, TimSerialSecond)
Unload Me
End Sub


Gruß Matthias

Anzeige
AW: UserForm unload fehlerhaft nach Application.Wait
18.09.2008 11:35:33
Andreas
Hallo Matthias,
vielen Dank für Deine Antwort. Es funktioniert!!! Ich kannte den Befehl 'DoEvents' und dessen Auswirkungen bisher nicht. Ich habe nun in der Hilfe nachgelesen und werde das Gelernte erst einmal sacken lassen.
Dir vielen, vielen Dank.
Liebe Grüße, Andreas Hanisch

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige