Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1176to1180
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

Kurze Frage: Gibt es keinen SLEEP Befehl?

Kurze Frage: Gibt es keinen SLEEP Befehl?
Holger
Hallo,
ich möchte in einem Makro 1 Sekunde "schlafen", also die weitere Ausführung um
1 Sekunde verzögern. Dieses immer wieder in einer Schleife.
Anscheinend gibt es den Befehl SLEEP aber gar nicht.
Gibt es eine andere Möglichkeit?
Gruß
Holger

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Klargibt es sleep ....
10.09.2010 09:39:02
Klaus
Moin Holger,
"sleep" ist schon richtig.
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub test()
MsgBox (Timer)
Sleep 1000
MsgBox (Timer)
End Sub
Grüße,
Klaus M.vdT.
AW: Kurze Frage: Gibt es keinen SLEEP Befehl?
10.09.2010 09:39:29
MisterB
Hallo Holger,
such mal im Archiv nach dem Befehl Application.Wait
Gruß
Martin
Danke euch
10.09.2010 09:54:10
Holger
Hallo,
Vielen Dank!
Das "Sleep" Makro habe ich ehrlich gesagt nicht ganhz kapiert,
aber die Application.Wait Methode überzeugt mich.
Gruß+Dank
Holger
Danke für die Rückmeldung! mit Text
10.09.2010 09:57:48
Klaus
Hallo Holger,
das Makro zeigt die Zeit, schläft dann 1 sekunde und zeigt dann wieder die Zeit, um zu beweisen dass es geschlafen hat ;-)
Interessant ist die Deklaration darüber, die den Befehl "sleep" ermöglicht.
Grüße,
Klaus M.vdT.
Anzeige
Doch noch eine Frage
10.09.2010 10:05:02
Holger
Hallo Klaus,
ich verstehe immer noch nicht, wie ich das Makro einbauen könnte.
Hier also mein Code. Statt Application.Wait würde ich gerne nur 0.5 sec unterbrechen, schau mal
hier.
Public Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim intCol As Integer
If Target.Cells.Count And Target.Address = "$L$10" Then
intCol = 14
If Columns("N:R").Hidden = True Then
Call GetPublishesExtended(ActiveSheet)
For intCol = 14 To 18
Columns(intCol).Hidden = False
Application.Wait (Now + TimeSerial(0, 0, 1))
Next intCol
Target.Interior.Color = vbYellow
Else
For intCol = 18 To 14 Step -1
Columns(intCol).Hidden = True
Application.Wait (Now + TimeSerial(0, 0, 1))
Next intCol
Target.Interior.Color = vbBlack
End If
End If
End Sub

Anzeige
AW: Doch noch eine Frage
10.09.2010 10:53:20
Klaus
Hi,
Declare drüber, sleep rein, 0.5sek = 500 Milisek.
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim intCol As Integer
If Target.Cells.Count And Target.Address = "$L$10" Then
intCol = 14
If Columns("N:R").Hidden = True Then
Call GetPublishesExtended(ActiveSheet)
For intCol = 14 To 18
Columns(intCol).Hidden = False
'Application.Wait (Now + TimeSerial(0, 0, 1))
sleep 500
Next intCol
Target.Interior.Color = vbYellow
Else
For intCol = 18 To 14 Step -1
Columns(intCol).Hidden = True
'Application.Wait (Now + TimeSerial(0, 0, 1))
sleep 500
Next intCol
Target.Interior.Color = vbBlack
End If
End If
End Sub
Aber Application.Wait (Now + TimeSerial(0, 0, 0.5)) müsste auch funktionieren, oder?
Warum blendest du im 0,5 Sekunden Takt Spalten aus? Willst du die User ärgern? :-) Egal, geht mich ja auch nichts an.
Grüße,
Klaus M.vdT.
Anzeige
AW: Doch noch eine Frage
10.09.2010 11:01:42
Holger
Hallo Klaus,
manchmal gehen Dinge einfach zu schnell und ich bin gerade dabei, einen Einblendeffekt zu schreiben.
Dabei will ich den sleep immer weiter verkürzen, um eine Art Wischen zu erreichen.
Da vor her ein Makro läuft läuft, soll der User so ein subjektives Gefühl bekommen, es wäre wirklich einiges passiert. Aber das macht nur Sinn, wenn die die komplette Datei sehen würdest ;)
Ich verbringe mehr Zeit mit Usability als mit dem eigentlichen Code, habe damit aber gute Erfahrungen gemacht.
AW: Doch noch eine Frage
10.09.2010 11:16:46
Klaus
Hi Holger,
dann sollte "sleep" ja genau das richtige für dich sein! Statt sleep 500 nimmst du sleep x, die Variable x kannst du innerhalb der Schleife beliebig verringern.
Dem User zu suggerieren, es sei viel passiert find ich witzig :-) Ich verstehs aber sehr gut. Meines erachtens reicht aber eine MsgBox am Ende des Makro ("Unheimlich viele Operationen ausgeführt - drücke OK") um dem User ein warmes Gefühl zu geben.
Grüße,
Klaus M.vdT.
Anzeige
AW: Doch noch eine Frage
10.09.2010 11:21:05
Holger
Hi Klaus,
bei Application.Wait kann man anscheinend auch eine integer Variable benutzen.
Die kann ich in der For Schleife runterzählen.
Ich versuche immer, alles so einfach wie möglich zu machen und etwas aufgehübscht.
Am liebsten würde ich bei der Target.Adress eine Art Entriegeln-Effekt programmieren wie beim iPhone, aber keine Ahnung wie. So kann man auch durch Zufall auf die Zelle kommen, das ist noch nicht so schön. Über einen Button will ich es aber auch nicht machen.
Mir fällt gerade auf, dass ich ScreenupDating anschalten muss, um die Zeilen verzögert darzustellen.
Blöd, weil dadurch auch der Rest der Tabelle blinkt :-(
Anzeige
AW: Doch noch eine Frage
10.09.2010 11:42:50
JogyB
Hallo Klaus,
wieso zeigst Du dem User nicht in der Statusbar Informationen an, wäre sinnvoller als irgendwelche Wischeffekte.
Gruß, Jogy
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge