Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Dialogbox temporär anzeigen

141 views
Skip to first unread message

Gerhard Faehling

unread,
May 24, 2002, 5:08:05 AM5/24/02
to
Hallo zusammen,

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


Bernd Held

unread,
May 24, 2002, 7:59:18 AM5/24/02
to
Hallo 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...

Melanie Breden

unread,
May 24, 2002, 8:17:52 AM5/24/02
to
Hallo Gerhard,

"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


Gerhard Faehling

unread,
May 24, 2002, 12:36:43 PM5/24/02
to
Hallo Bernd,

> 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

Gerhard Faehling

unread,
May 24, 2002, 1:43:08 PM5/24/02
to
Hallo Melanie,

> > 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

Sisto Salera

unread,
May 24, 2002, 6:08:59 PM5/24/02
to

Hallo Gerhard,
Mit den nachfolgenden Makros bekommst Du eine schöne,
aufällig gelbe Textbox in die Mitte des Bildschirms.
Sie wird durch Call ShowTextBox("Text") geöffnet und
durch Call HideTextBox geschlossen.
Wenn Du sie in ein Modul kopierst, kannst Du sie von jedem
Makro aus aufrufen, mit wechselndem Text.
Mit freundlichen Grüssen
Sisto Salera

********************************************************
* 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

Hans Hofmann

unread,
May 25, 2002, 1:53:04 AM5/25/02
to
On Fri, 24 May 2002 19:43:08 +0200, "Gerhard Faehling"
<gf....@comsulting.de> wrote:

8<---------------


>
>Wait(Now + TimeValue("00:00:01"))

Ein DoEvents an geeigneter Stelle könnte Dein Problem lösen?

Gruß HW

Gerhard Faehling

unread,
May 25, 2002, 8:30:08 AM5/25/02
to
Hallo Hans,

> >Wait(Now + TimeValue("00:00:01"))
> Ein DoEvents an geeigneter Stelle könnte Dein Problem lösen?

das hat geholfen - vielen Dank!

Ciao

Gerhard

0 new messages