# Array als Parameter für eine Funktion



## maxi (24. Dezember 2009)

Hi Leute !

Ich hab eine Funktion, die als Parameter ein Array will.

Public Function fnFunction(Feld() As Integer) As Integer

Global KFZ() As Integer 
ReDim KFZ(0 To AnzahlEinzelTeile)
ZuOberst = fnFunction(KFZ)

das t ja.

Aber jetzt hab ich ein Zweidimensionales Array. und das check ich nicht.

Global S() As Integer  
ReDim S(1 To AnzahlStapel, 1 To AnzahlEinzelTeile)

ZuOberst = fnFunction(S(1)) 

geht nicht: unverträglicher Typ: Datenfeld erwartet.

ok, ich könnte die Spalte vom 2d Array in ein 1d Array umkopieren, und dann dieses als Parameter verwenden.
Oder eine zweite function schreiben, die ein 2d array will + den Spaltenindex.
schwachsinn.
gibts hier irgendeine möglichkeit, die Spalte eines 2DArrays zu der funktion zu übergeben ?

oder soll ich gleich mit Range statt Array arbeiten (keine Ahnung, was besser, schneller usw. ist) ?


----------



## SkojA (26. Dezember 2009)

Servus,

dim ArrFeld(2) as string

ArrFeld(0) = "a"
ArrFeld(1) = "b"
ArrFeld(2) = "c"

msgbox ArrFeld(1)    ' Meldet >>>>    b


anders:

dim ArrFeld(2,2) as string

ArrFeld(0,0) = "a"
ArrFeld(0,1) = "b"
ArrFeld(0,2) = "c"
ArrFeld(1,0) = "d"
ArrFeld(1,1) = "e"
ArrFeld(1,2) = "f"
ArrFeld(2,0) = "g"
ArrFeld(2,1) = "h"
ArrFeld(2,2) = "i"

msgbox ArrFeld(0,1)    ' Meldet >>>>    b
msgbox ArrFeld(2,0)    ' Meldet >>>>    g
msgbox ArrFeld(1,1)    ' Meldet >>>>    e



also zb.:
fnErgebnis(ArrFeld(2,1))

mfg
SkojA


----------



## Yaslaw (28. Dezember 2009)

Ein doppelter Array musst du als Variant oder Variant() übergeben....


```
public function myFunction(myField() as Variant) return integer
...
'oder
public function myFunction(myField as Variant) return integer
```


----------



## maximus007 (4. Januar 2010)

hi leute !
sorry. war skifahren.
Danke für eure Antworten. aber leider ...

@ skoja: ich will nicht ein Element eines Feldes übergeben, sondern eine ganze Spalte eines Arrays.
auch @yaslaw: ein ganzes 2D-Array kann ich übergeben. das t.

mein Problem ist: ich will EINE Funktion einmal mit einem 1D Array und dann mit der Spalte eines 2D-Arrays aufrufen. 

Function fnFunction(Feld() As Integer) As Integer

und dann diese aufrufen mit einem 1D Feld:

x= fnFunction(Array)    das geht.

aber beim 2d Feld gibts Probleme:

x=fnFunction(Gitter(1))  
oder 
x=fnFunction(Gitter(2)

dim gitter(2,10)


----------



## Yaslaw (4. Januar 2010)

```
public function myFunction(myValue as Variant) return integer
```

Abschliessend myValue analysieren (is_array etc) um mit dem entsprechenden Type zu abreiten.


----------



## öaslkjdfökldq (4. Januar 2010)

das prob ist beim Aufruf. (ich möchte nur eine Spalte des 2D-Arrays übergeben)
Auch bei den Überwachungsausdrücken kommt dieselbe Meldung:

Watch : - : stapel :  : Integer(1 to 2, 1 to 10) : Main.fnLegsAufStapel
         - : stapel(1) :  : Integer(1 to 10) : Main.fnLegsAufStapel

Watch :   : stapel(1) : <Index außerhalb des gültigen Bereichs> : Integer : Main.fnLegsAufStapel


ok. Stapel(1,1) spricht EIN Element des Datenfeldes an. 
Aber: Wie kann man eine Spalte (oder Reihe) eines Datenfeldes direkt ansprechen, oder muss mann das wirklich in eine andere Variable (1D-Datenfeld)  umkopieren


----------



## SkojA (8. Januar 2010)

for fori = 0 to 3
     funktion(array(1,fori))
next fori

sowas    ?!


----------

