PDA

Vollständige Version anzeigen : OnTime und Übergabe von Parametern


EarlFred
14.09.2007, 11:31
Hallo zusammen,

da es mich einige Experimente und eine umfangreichere Recherche in den Tiefen des Internets gekostet hat und ich dieses Thema nicht als allgemein bekannt voraus setze, wollte ich hier mal ein paar Ergebnisse und Infos zum Thema "OnTime" mit gleichzeitiger Übergabe von Parametern loswerden.

Was der VBA-Befehl "Application.OnTime" mitsamt seinen Parametern grundsätzlich bewirkt, setze ich jedoch als bekannt voraus.

Manchmal wäre es sicher hilfreich, einer auf diese Weise gestarteten Prozedur auch ein paar Parameter mitzugeben - ohne Know-How leider nicht möglich und auch die Office-Hilfe schweigt sich hierüber aus.

Der Trick: Man setze den Prozeduraufruf in einfache Anführungszeichen vorne und hinten. Folgender Code startet "MeinMakro" mit dem Wert 123 als Parameter:

Application.OnTime Now + TimeValue("00:00:15"), "'MeinMakro 123'", , True

Bei Strings (auch als Variable!) ist es notwendig, diese in doppelte Anführungszeichen zu setzen.
Folgendes Beispiel übergibt den Text "Hallo" an das Makro:

Application.OnTime Now + TimeValue("00:00:15"), "'MeinMakro ""Hallo""'", , True

Das ganze funktioniert auch mit Variablen im Aufruf:

Im folgenden Beispiel wird das Makro "machen" mit 4 Parametern aufgerufen:
var_Wert: Der zum Zeitpunkt des OnTime-Befehls in Zelle A1 stehende Wert
glob_Wert: Der zum Zeitpunkt des Makrostarts (Now + 15 Sec) in der globalen Variable "Wertglobal" stehende Wert
stat_Wert: Der zum Zeitpunkt des OnTime-Befehls in Zelle "Wertstatisch" stehende Wert
strText: Der zum Zeitpunkt des OnTime-Befehls in Zelle " strText " stehende Text

Global Wertglobal As Integer

Sub Start()
Range([B2], [E2]).ClearContents
[A1] = 1
Wertstatisch = [A1]
Wertglobal = [A1]
strText = "Wurst und Käse"

Application.OnTime Now + TimeValue("00:00:15"), "'machen " & [A1] & ", Wertglobal, " & Wertstatisch & ",""" & strText & """'", , True

[A1] = [A1] * 2
Wertglobal = Wertglobal * 2
End Sub

Sub machen(var_Wert As Integer, glob_Wert As Integer, stat_Wert As Integer, Text_Wert As String)
[B1] = "Wert global"
[B2] = var_Wert
[C1] = "Wert variabel"
[C2] = glob_Wert
[D1] = "Wert statisch"
[D2] = stat_Wert
[E1] = "Text"
[E2] = Text_Wert
End Sub

Ich hoffe, es ist für den einen oder anderen nützlich!

Grüße
EarlFred

Nepumuk
14.09.2007, 19:01
Hallo EarlFred,

interessant. Verhält sich wie die Parameter von Commandbarbuttons.

Also DANKE für die Info :top: :top: :top:

EarlFred
14.09.2007, 22:19
Hi Nepumuk,

danke für's Feedback und die Ergänzung mit den Commandbuttons (und übrigens auch Menübuttons)!

Ich wollte eigentlich auch einen Satz dazu schreiben, allerdings war ich mit dem Austesten noch nicht ganz soweit. Mit statischen Werten habe ich es probiert - das klappt hervorragend. Mit variablen Werten / Zellbezügen etc. habe ich allerdings noch nicht experimentiert.

Wäre natürlich klasse, wenn es klappt, wie Du schreibst! Wird bei nächster Gelegenheit verwendet!

:mrcool:

Grüße
EarlFred