aufgrund der Bitte eines Einzelnen hier mache ich dann doch einen neuen Thread auf. what arals.
https://www.herber.de/bbs/user/73905.xls
Problem, startet man in Excel 2000 die Prozedur "tt", so läuft die wie geplant ab. Ist die UF wieder weg kann man problemlos in Excel weiterarbeiten.
Im VB-Editor aber nicht. Wenn man da nicht oben auf Ausführen-- Zurücksetzen klickt, so kann man geschätzte 10 sec lang im Code nichts machen, also nicht mal ein Leerzeichen anhängen irgendwo o.ä..
Wodran bitte könnte das hängen, mehr DoEvents kann ich doch nicht einbauen.
(im Code ist Userform1, in der Datei userform2, aber das hängt mit Tests zusammen, hat keine Bedeutung, in den Testdateien war immer nur eine UF gleichzeitig im Test vorhanden.
Gruß ^ Danke
Reinhard
in Modul der Userform
Option Explicit
Private Sub UserForm_Activate()
DoEvents
Call tt
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
MsgBox "Hinweisfenster nicht schliessen!", vbCritical
Cancel = 1
End If
End Sub
Private Sub UserForm_Initialize()
Me.Label1.Left = 0
Me.Label1.Height = Me.Height
Me.Label1.Width = 0
Me.Label1.Top = 0
UserForm1.Repaint
End Sub
In Modul1
Option Explicit
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub tt()
' seltsam, so 10 sec nach Beendigung der UF kann man in Editor nichts eingebem
' oder halt oben auf Ausführen--Zurücksetzen klicken! ?
' mehr als DoEvents fällt mir dazu nicht ein :-(
' in Excel kann man sofort nach der UF weiterarbeiten.
Dim N
UserForm2.Show 0
For N = 0 To 150
Call MeinBalken(150, N)
Sleep 100 'Millisekunden
DoEvents
Next N
DoEvents
Sleep 300
Unload UserForm1
DoEvents
End Sub
Sub MeinBalken(ByVal Anzahl As Long, ByVal N As Long)
Dim Breite As Single
Breite = UserForm1.Width / Anzahl * N
With UserForm1
.Label1.Width = Breite
.Caption = "Verlauf " & Format(N / Anzahl, "0.0 %")
.Caption = .Caption & " " & N & " / " & Anzahl
.Repaint
End With
End Sub