Anzeige
Archiv - Navigation
792to796
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
792to796
792to796
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Dynamische Arraybezeichnung

Dynamische Arraybezeichnung
17.08.2006 14:36:50
Stefan
Hallo,
vielleicht kann mir jemand weiterhelfen.
Habe folgenden Code:
Dim i as Integer
Dim arr1(), arr2()... As String
For i = 1 To 10
MsgBox (arr & i).length()
Next
Die Ausgabe funktioniert so nicht. Eigentlich soll in der Schleife die Zusammensetzung zu einem der bekannten Arraynamen erfolgen und von diesem Array dann die Länge ausgegeben werden. Der Zugriff klappt aber nicht, wahrscheinlich weil die Zusammensetzung immer noch vom Typ String ist. Gibt es da überhaupt eine Möglichkeit?
Danke im Voraus.
Stefan

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

Betreff
Datum
Anwender
Anzeige
AW: Dynamische Arraybezeichnung
17.08.2006 14:42:59
Eule
Hi Stefan
schau Dir mal die UBOUND-Funktion an. Die ist es, die Du brauchst!
Gruss Eule
AW: Dynamische Arraybezeichnung
17.08.2006 14:44:35
u_
Hallo,
Variablennamen kannst du nicht so zusammenbauen.
Gruß
Lesen gefährdet die Dummheit
AW: Dynamische Arraybezeichnung
17.08.2006 14:50:18
Stefan
Danke für die Antworten.
Wie baut man Variablennamen am besten zusammen?
Habe bereits Object("arr" & i).length und ähnliches probiert, ohne Erfolg...
Stefan
AW: Dynamische Arraybezeichnung
17.08.2006 14:57:49
u_
Hallo,
nimm ein mehrdimensionales Array. arr(1 to 10, 1 to 1000)
Gruß
Lesen gefährdet die Dummheit
AW: Dynamische Arraybezeichnung
17.08.2006 15:14:43
Dan
Hi Stefan, hier ein Beispiel, wie man die Lenge des array testen koennte. Gruss Dan, cz
Option Explicit
' Option Base 1
Public

Function ArrayLenght(ByRef io_array As Variant) As Long
If (VBA.IsArray(io_array) = False) Then
Err.Raise 5 ' the argument is not an array so raise an error 'invalid procedure call or argument'
Exit Function
End If
Dim lowerBound As Long
Dim upperBound As Long
lowerBound = 0
upperBound = 0
' if array was not dimensioned yet, calling LBound or UBound causes an error
' so suppress catching of errors here
On Error Resume Next
Err.Clear
lowerBound = LBound(io_array)
upperBound = UBound(io_array)
If (Err.Number <> 0) Then ' array was not dimensioned yet
ArrayLenght = -1
Else ' array was dimensioned already
ArrayLenght = upperBound - lowerBound + 1
End If
End Function

Public

Sub Main()
Dim i As Integer
Dim arr1() As String, arr2(0 To 3) As String, arr3(2 To 5) ' arr3 is of type Variant
' test 1
MsgBox "Langht of arr1 = " & ArrayLenght(arr1)
' test 2
ReDim arr1(2) ' by Option Base = 0 returns 3, by Option Base = 1 returns 2, default is Option Base = 0
MsgBox "Langht of arr1 = " & ArrayLenght(arr1)
MsgBox "Langht of arr2 = " & ArrayLenght(arr2)
MsgBox "Langht of arr3 = " & ArrayLenght(arr3)
End Sub

Anzeige
AW: Dynamische Arraybezeichnung
17.08.2006 15:34:15
Stefan
Hi Dan,
danke, aber um die Verwendung von .length() gings mir eher nicht.
Ich könnte ja auch schreiben:
MsgBox arr1.length
MsgBox arr2.length
MsgBox arr3.length
MsgBox arr4.length
MsgBox arr5.length
...
Nur möchte ich das in einer Schleife haben. Wie würdest Du das machen?
Der Ansatz von u_ ist schon relativ vielversprechend.
AW: Dynamische Arraybezeichnung
17.08.2006 15:41:53
Dan
arr.length ... wenn ich mich nicht irre, Length kann man so nicht rufen. Wenn Du die variablen in einer Schleife durchgehen willst, mach ein Array von Arrays, oder eine Collection von Arrays. Gruss Dan, cz

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige