Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1336to1340
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

Index abhängiger Array Aufruf;

Index abhängiger Array Aufruf;
21.11.2013 10:24:53
Robin
Hallo!
Ich möchte in einer Funktion ein Array aufrufen- abhänig vom Wert welchen die Funktion bekommen hat. (Brauche es für c.a 40 Arrays- hier mal mit drei...)also etwa so:
private Array_1() as double
private Array_2() as double
private Array_3() as double

Function Berechnung(ID) 'ID kommt aus UserInterface und hat den Wert 1,2 oder 3
Array_ID()=Wert
End Function

Was ich schon probiert habe sind:
Array_ID als string zusammenzubauen und dann umzuwandeln- hat aber nicht funktioniert...
Eine andere Idee war, die Arrays in einem Array zu Speichern, also etwa so:
private SuperArray(1 to 3) as double
SuperArray(1)=Array_1
SuperArray(2)=Array_2
SuperArray(3)=Array_3

Und dann in der Funktion aufrufen: SuperArray(ID)=Wert
hier bekomme ich aber den richtigen Aufruf nicht hin?
Kennt jemand eine einfache Lösung?
Noch als Sahnehäubchen: Können die Arrays in einer for Schleife definiert werden:
(So funktionierts sicher nicht- aber um das Prinzip zu erklären)
dim i as integer
for i=1 to 40
Array_i() as double
next i

Danke für Eure Hilfe!
Grüsse,
Robin

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Index abhängiger Array Aufruf;
21.11.2013 10:54:15
Rudi
Hallo,
Eine andere Idee war, die Arrays in einem Array zu Speichern,
das ist der richtige Weg.
z.B.
Sub aaaa()
Dim arr(1 To 3)
arr(1) = Array(1, 2, 3, 4, 5)
arr(2) = Array(5, 6, 7, 8)
arr(3) = Range("A1:B10")
End Sub

Gruß
Rudi

AW: Index abhängiger Array Aufruf;
25.11.2013 10:26:20
Robin
Hallo Rudi,
Danke für deine Antwort!
Ich habs leider nicht geschafft das Array so im Array zu speichern.
Muss man bei der deklaration der Arrays etwas spezielles beachten?
arr(1)=Array(1,2,3,4,5) speichert an position 1 des arrays "arr" das mehrdimensionale Array "Array(1,2,3,4,5)", richtig? Kann Das Array auch vorgängig definiert werden, also:
dim Array1=Array(1,2,3,4,5) as double
und dann an das Array "arr" übergeben werden?
arr(1)=Array1
Grüsse,
Robin

Anzeige
Ich dachte, das wäre nun klar, ...
25.11.2013 23:22:11
Luc:-?
…Robin;
ich schrieb doch, dass das SuperArray vom DatenTyp Variant sein muss. Nur ein Variant ist in der Lage, diesen Array-Typ (nebenbei, der in nahezu allen PgmierSprachen verwendete, der n-dimensionale xlTyp ist die Ausnahme!) darzustellen.
Das Dim Array1 = Array(1,2,3,4,5) As Double nicht geht, merkst du ganz schnell, wenn du das versuchst. Aber warum auch?! Richtig ist Dim Array1(4) As Double und dann alle Elemente einzeln füllen. Was du vorhast, geht ebenfalls nur mit einem Variant — dem kannst du nämlich alles mögliche zuweisen!
arr(1) = Array1 geht dann wieder, wenn du arr zuvor als Variant deklariert hast. Allerdings musst du in diesem Fall schon die Anzahl der Elemente in der Deklaration oder per ReDim angeben und dabei sicherstellen, dass der 1.Index entweder 0 (Standard) oder 1 ist. Einfacher wäre also arr = Array(Array1, Array2, …, Arrayn).
Gruß Luc :-?

Anzeige
AW: Ich dachte, das wäre nun klar, ...
26.11.2013 07:54:03
Robin
Hallo Luc!
Danke für deine sehr guten Tipps. Nun ist alles klar!
Grüsse,
Robin

Na also, mein' ich doch...! ;-) Gruß owT
26.11.2013 13:22:45
Luc:-?
:-?

RechercheStichwort: Arrays in Array bzw ...
21.11.2013 15:14:41
Luc:-?
Variant mit Array, Robin;
wie es Rudi gezeigt hat oder die Teil-Arrays wie gewohnt bzw vorgesehen füllen (möglichst als 1dimensionalen [horizontalen] Vektor, also aus Spalten mit 1× und aus Zeilen 2× WorksheetFunction.Transpose, falls sie nicht zu groß sind, 2dim [senkrechte] Vektoren und Matrizen, sogar nTensoren, sind aber auch möglich, nur nicht so in xlTab abbildbar) und dann wie von dir angedacht und Rudi gezeigt in das SuperArray, das dann vom DatenTyp Variant sein muss, speichern.
Wiedergabe/Aufruf eines ganzen Teil-Arrays mit SuperArray(ID), eines Wertes aus einem Teil-Array mit SuperArray(ID)(elementIndex) bzw SuperArray(ID)(zeilenIndex, spaltenIndex).
Erzeugung eines Arrays aus ListenText ist mit vbFkt Split möglich, erzeugt aber ein Array vom DatenTyp Variant mit UnterTyp Text, d.h., Zahlen sind dann Text und müssen ggf einzeln gewandelt wdn. Die Erzeugung eines zusammenfassenden Textes aus einem vorliegenden Array ist also idR kontraproduktiv und nur in Ausnahmefällen sinnvoll (dann besser als Text-MatrixKonstante in US-Notation erzeugen und mit Evaluate auswerten/Array erzeugen).
Die zyklische Deklaration von Variablen ist weder möglich noch sinnvoll.
DirektInitiierung eines solchen Arrays kann auch so erfolgen:
SuperArray = Array(Array(1, 2, 3), Array(4, 5))
SuperArray(0) wäre dann {1.2.3} (dt xlMatrixKonstanten-Schreibweise), während SuperArray(0)(0) 1 ergeben würde.
Gruß Luc :-?

Anzeige
AW: RechercheStichwort: Arrays in Array bzw ...
22.11.2013 08:08:43
Robin
Danke Rudi und Luc für euren schnellen Antworten! Ich werde versuche, das Problem mit Hilfe eurer Antworten zu Lösen und gebe dann Rückmeldung.
Grüsse,
Robin

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige