Application.Run mit IsMIssing als Parameter-Wert

10/04/2010 - 13:02 von Josef Poetzl | Report spam
Hallo!

Ich schreibe gerade an einer Prozedur, die aus einem String, der einen
Funktionsaufruf inkl. Parametern enthàlt, die Parameter an
Application.Run weitergeben soll.

Prinzip:
| dim params(29) as Variant
| ... (parameterwerte auslesen und einstellen)
| Application.Run "EineProc", params(0), params(1), ... params(29)

Jetzt gibt es aber das Problem, dass ich an die nicht vorhandenen
Parameter einen Wert übergeben muss, der IsMissing erfüllt.

Meine aktuelle Notlösung mit einer Hilfsfunktion:
Private Function GetIsMissing(Optional x As Variant) As Variant
GetIsMissing = x
End Function

Verwendung:
For i = 0 To 29
params(i) = GetIsMissing
Next
...
Application.Run "EineProc", params(0), params(1), ... params(29)


Gibt es dafür keine elegantere Lösung - z. B. eine Konstante wie
Empty?


mfg
Josef

Code-Bibliothek für Access-Entwickler: http://access-codelib.net/
Access-FAQ von Karl Donaubauer: http://www.donkarl.com/
 

Lesen sie die antworten

#1 André Minhorst
15/04/2010 - 21:46 | Warnen spam
Hi Josef,

Am Sat, 10 Apr 2010 13:02:57 +0200 schrieb Josef Poetzl:
Ich schreibe gerade an einer Prozedur, die aus einem String, der einen
Funktionsaufruf inkl. Parametern enthàlt, die Parameter an
Application.Run weitergeben soll.

Prinzip:
| dim params(29) as Variant
| ... (parameterwerte auslesen und einstellen)
| Application.Run "EineProc", params(0), params(1), ... params(29)

Jetzt gibt es aber das Problem, dass ich an die nicht vorhandenen
Parameter einen Wert übergeben muss, der IsMissing erfüllt.

Meine aktuelle Notlösung mit einer Hilfsfunktion:
Private Function GetIsMissing(Optional x As Variant) As Variant
GetIsMissing = x
End Function

Verwendung:
For i = 0 To 29
params(i) = GetIsMissing
Next
...
Application.Run "EineProc", params(0), params(1), ... params(29)


Gibt es dafür keine elegantere Lösung - z. B. eine Konstante wie
Empty?



Deine Lösung finde ich erstmal super - aber funktioniert sie auch?

Dieser Versuchsaufbau meldet, dass beide Parameter leer sind, obwohl das
nur beim ersten der Fall sein sollte:

Public Sub Calltest()
Application.Run "test", GetIsMissing, "lala"
End Sub

Private Function GetIsMissing(Optional x As Variant) As Variant
GetIsMissing = x
End Function

Public Sub test(Optional var1 As Variant, Optional var2 As Variant)
If IsMissing(var1) Then
MsgBox "var 1 fehlt"
End If
If IsMissing(var2) Then
MsgBox "var 2 fehlt"
End If
End Sub

Kannst Du das reproduzieren oder übersehe ich was?

Ciao
André

http://www.access-basics.de

Ähnliche fragen