Herbers Excel-Forum - das Archiv

Problem bei Übergabe eines Paramarrays

Bild

Betrifft: Problem bei Übergabe eines Paramarrays
von: Christian
Geschrieben am: 28.10.2003 15:10:31
Hi Leute,

ich will eine Argumentenliste an eine Funktion übergeben. Leider klappt das ganze nicht so, wie ich es gerne hätte. Nachfolgend der VBC code.



Function ShowArglist(ParamArray SearchArray()) As Variant
Dim i As Integer
For i = 0 To UBound(SearchArray)
MsgBox SearchArray(i)
Next i
End Function





Sub main()
Dim argList As Variant
argList = Array("A", 7, 0)
ShowArglist "A", 7, 0
ShowArglist (argList)
End Sub



Das Problem:
============
Der erste Aufruf der Funktion ShowArglist mittels:
ShowArglist "A", 7, 0 klappt einwandfrei und liefert nacheinander die einzelnen Werte.

Der zweite Aufruf jedoch bricht mit einem Laufzeitfehler ab. Was mache ich falsch?
Weiss irgendjemand eine Lösung?

Danke und Gruss
Christian
Bild

Betrifft: Alles:-)
von: Michael Scheffler
Geschrieben am: 28.10.2003 15:15:46
Hi,

eine Funktion liefert Dir EINEN Wert zurück. Was Du hier willst, ist ein weiters Sub!
Eine


Function sieht i.a. so aus:



Function AddiereZweiGanze(intA As Integer, intB As Integer) As Integer
AddiereZweiGanze = intA + intB
End Function



Aufruf erfolgt:



Sub Rufe()
Dim intSumme As Integer
intSumme = AddiereZweiGanze(1, 2)
End Sub



Gruß

Micha
Bild

Betrifft: AW: Alles:-)
von: Christian
Geschrieben am: 28.10.2003 16:18:00
Hi Micha,

verstehe deine Hilfe nicht ganz. Ich übergebe doch ein Array an die Funktion ShowArglist. Innerhalb von ShowArglist lese ich die übergebenen Werte über eine Schleife aus und zeige sie über eine msgbox an.

Der Aufruf ShowArglist "A",7,0 funktioniert, während ShowArglist(argList) nicht funktioniert. Wer kann mir weiterhelfen?
Bild

Betrifft: Danke, hat sich erledigt
von: Christian
Geschrieben am: 28.10.2003 16:34:12
Micha danke,
habe die Lösung gefunden.



Function ShowArglist(ParamArray SearchArray()) As Variant
Dim i As Integer
Dim arg, subarg As Variant
For Each arg In SearchArray
MsgBox TypeName(arg)
If TypeName(arg) = "Variant()" Then
For Each subarg In arg
MsgBox subarg
Next
End If
Next
End Function


Bild

Betrifft: AW: Danke, hat sich erledigt
von: Michael Scheffler
Geschrieben am: 28.10.2003 16:36:40
Hallo Christian,

Du hast mich nicht verstanden: dafür ist eine Funktion nicht da. Das ist eine Aufgabe für ein Sub! Eine Funktiuon sollte einen Wert zurückgeben.



Sub ShowArglist(ParamArray SearchArray())
Dim i As Integer
Dim arg, subarg As Variant
For Each arg In SearchArray
MsgBox TypeName(arg)
If TypeName(arg) = "Variant()" Then
For Each subarg In arg
MsgBox subarg
Next
End If
Next
End Sub



 Bild
Excel-Beispiele zum Thema " Problem bei Übergabe eines Paramarrays"
Verschnittproblem mit Solver lösen