ich habe ein Makro, das etwas länger läuft. Während das aktiv ist,
möchte ich gern einen Hinweis anzeigen, dass noch "gearbeitet" wird.
Nun ist das ja eigentlich relativ einfach. Am Anfang des Makros kommt
ein
myForm.Show
und am Ende ein
myForm.Hide
Problem: Der Inhalt der Form wird während des Ausführens des Makros
nicht angezeigt. Kleines Beispiel:
Sub test3()
Dim i As Double, y As Double
myForm.Show
For i = 1 To 10000000
y = y + i
Next
MsgBox (y)
myForm.Hide
Unload myForm
End Sub
Erst bei Msgbox wird der Inhalt mit angezeigt.
Kann man das irgendwie anders lösen? So macht die Form ja nicht viel
Sinn.
Oder gibt es noch andere Möglichkeiten, ein kleines Statusfenster
anzuzeigen? Bitte am besten einheitlich von Excel 97 bis XP.
Danke für jeden Tipp
Gerhard
ich mach das immer so, dass ich die Statuszeile von
Excel dafür nütze länge Makros zu begleiten.
Application.Statusbar="Beginn der Verarbeitung"
usw..
Am Ende
Application.Statusbar=false
Viele Grüße
Bernd
MVP für Microsoft Excel
http://held-office.de
"Gerhard Faehling" <gf....@comsulting.de> schrieb im Newsbeitrag
news:ackvtv$qp8ok$1...@ID-16994.news.dfncis.de...
"Gerhard Faehling" <gf....@comsulting.de> schrieb im Newsbeitrag
news:ackvtv$qp8ok$1...@ID-16994.news.dfncis.de...
durch
"myForm.Show vbModeless"
wird erreicht, dass man -während die UserForm am
Bildschirm angezeigt wird - in Excel noch Aktionen ausführen kann.
Welche Alternative dazu in Excel 97 vorhanden ist, kannst du im thread vom
19.05.02
"Wert aus anderer Arbeitsmappe übernehmen" nachlesen
oder erstelle einen Text in der Stauszeile:
' Am Anfang des Makros
Application.StatusBar = "Bitte warten, Makro läuft...."
' Am Ende des Makros
Application.StatusBar = False
Hoffe, dass dir das weiterhilft
mit Gruß
Melanie
XL2000
> ich mach das immer so, dass ich die Statuszeile von
> Excel dafür nütze länge Makros zu begleiten.
> Application.Statusbar="Beginn der Verarbeitung"
> usw..
> Am Ende
> Application.Statusbar=false
danke für den Hinweis.
Das ist mir allerdings nicht auffällig genug. Zumal Excel bei mir von
einem anderen Programm gestartet wird und ich gleich noch das Logo in
die Meldung mit einbauen möchte.
Ciao
Gerhard
> > Problem: Der Inhalt der Form wird während des Ausführens des Makros
> > nicht angezeigt. Kleines Beispiel:
> >
> durch
> "myForm.Show vbModeless"
> wird erreicht, dass man -während die UserForm am
> Bildschirm angezeigt wird - in Excel noch Aktionen ausführen kann.
so habe ich es ja auch versucht - das Modeless habe ich nur schon
direkt in der Form festgelegt.
Allerdings war das Problem einfach, dass die Form erschien, aber keine
Inhalte anzeigte. Wahrscheinlich kommt VBA gar nicht dazu, da das Makro
ansonsten ja weiter abgearbeitet wird. Wenn ich nach dem Aufruf der
Form eine Pause mit
Wait(Now + TimeValue("00:00:01"))
einlege, dann geht es wunderbar. Aber es geht auch jedesmal eine
Sekunde verloren...
Das mit der fehlenden Anzeige des Inhalts ist mein eigentliches
Problem.
> Welche Alternative dazu in Excel 97 vorhanden ist, kannst du im
thread vom
> 19.05.02 "Wert aus anderer Arbeitsmappe übernehmen" nachlesen
Das werde ich auch noch mal versuchen - vielleicht klappt das ja
besser. Danke für den Hinweis.
Ciao
Gerhard
********************************************************
* ACHTUNG ZEILENUMBRÜCHE DURCH NACHRICHTEN EDITOR *
* BESEITIGEN > " wird berechnet.. und (msoText... *
********************************************************
Sub LangesMakro()
Call ShowTextBox("Warten, " & ActiveSheet.Name & " wird
berechnet.")
'.....
'.....
Call HideTextBox
End Sub
Public Sub ShowTextBox(AnzeigeText)
On Error Resume Next
ActiveSheet.Shapes.AddTextbox
(msoTextOrientationHorizontal, 200, 200, 0, 0).Name
= "AnzeigeBox"
On Error GoTo 0
ActiveSheet.Shapes("AnzeigeBox").Select
Selection.Characters.Text = AnzeigeText
With Selection.Characters(Start:=1, Length:=100).Font
.Name = "Arial"
.FontStyle = "Fett"
.Size = 12
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Orientation = xlHorizontal
.AutoSize = True
.Placement = xlFreeFloating
.PrintObject = False
End With
Selection.ShapeRange.Fill.Visible = msoTrue
Selection.ShapeRange.Fill.Solid
Selection.ShapeRange.Fill.ForeColor.SchemeColor = 13
Selection.ShapeRange.Fill.Transparency = 0#
Selection.ShapeRange.Line.Weight = 2#
Selection.ShapeRange.Line.DashStyle = msoLineSolid
Selection.ShapeRange.Line.Style = msoLineSingle
Selection.ShapeRange.Line.Transparency = 0#
Selection.ShapeRange.Line.Visible = msoTrue
Selection.ShapeRange.Line.ForeColor.SchemeColor = 10
Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255,
255)
End Sub
Public Sub HideTextBox()
On Error Resume Next
ActiveSheet.Shapes("AnzeigeBox").Delete
On Error GoTo 0
End Sub
8<---------------
>
>Wait(Now + TimeValue("00:00:01"))
Ein DoEvents an geeigneter Stelle könnte Dein Problem lösen?
Gruß HW
> >Wait(Now + TimeValue("00:00:01"))
> Ein DoEvents an geeigneter Stelle könnte Dein Problem lösen?
das hat geholfen - vielen Dank!
Ciao
Gerhard