DoEvents - Ablauf beim Laden von Userformen
05.07.2005 11:48:25
Userformen
folgendes Problem: in einer Userform habe ich eine Liste von Dateien (Excel oder Word), die man per Doppelklick öffnen kann. So weit so gut, funktioniert ja auch problemlos. Da das Laden aber einen Tick zu lang dauert und für den User nicht unmittelbar einsichtig ist, dass etwas passiert, brauche ich aus Usabilitiy Gründen irgendeine Form der Anzeige in der Art "Keinen Stress, ich bin am Arbeiten". Zuerst wollte ich eine Progressbar verwenden, habe es aber nicht geschafft, die auch einzusetzen, VBA meckerte irgendetwas von wegen "nicht korrekt lizensiert". Auch egal, blende ich halt eine andere Userform dazwischen ein, das habe ich auch gemacht und zwar so:
Dim strFileName As String, strExt As String
Dim objWordFile As Word.Application
strFileName = arrValues(lstDocs.ListIndex)
strExt = LCase$(Right$(strFileName, 3))
Select Case strExt
Case "xls"
Load usfLoading
usfLoading.Show
Workbooks.Open strFileName
Unload usfLoading
Case "doc"
Load usfLoading
usfLoading.Show
Set objWordFile = CreateObject("Word.Application")
objWordFile.Documents.Open ThisWorkbook.Path & "\" & strFileName
objWordFile.Application.Visible = True
Unload usfLoading
Case Else
MsgBox "Keine geeignete Applikation zum Öffnen von " & _
strFileName & " gefunden!", vbCritical
End Select
Problem dabei ist nur, dass das Einblenden der Userform offensichtlich den Ablauf der anderen Userform unterbricht. Weil er öffnet mal gar nichts, aber sobald ich die usfLoading per Hand schließe, gehts dann auf einmal. Nehme mal an, dass das Öffnen so lange unterbrochen wird, bis die usfLoading die Kontrolle an usfKatalog zurückgibt. Also habe ich DOEvents an allen möglichen und unmöglichen Stellen ausprobiert, leider ohne Erfolg. Was mache ich falsch, bzw. wo liegt mein Denkfehler?
LG thorn