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

Argument eines Arrays aus einer Zelle auslesen

Argument eines Arrays aus einer Zelle auslesen
20.06.2006 16:34:16
Dirk
Hallo,
ich möchte das Argument für einen Array aus einer Zelle auslesen.
Wie bekomme ich das hin?
Ich habe schon ein paar Sachen versucht und es nicht leider geschafft :-(
Vielen Dank für Eure Hilfe,
Dirk

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Argument eines Arrays aus einer Zelle auslesen
21.06.2006 01:06:19
fcs
Hallo Dirk,
was meinst du mit Argument für Array? Den Inhalt eines Feldes im Array?
Beispiel:

Sub ArrayFuellen()
Dim arr1 As Variant, Feld(1 To 4) As String
arr1 = Array("A", "B", "C", "D")
'Arrays mit Daten aus Zellbereich A1:D1 füllen
For i = 0 To UBound(arr1)
arr1(i) = ActiveSheet.Cells(1, i + 1).Value
Feld(i+1) = ActiveSheet.Cells(1, i + 1).Value
MsgBox (i & " : " & arr1(i) & vblf & Feld(i+1))
Next i
End Sub

mfg
Franz
AW: Argument eines Arrays aus einer Zelle auslesen
21.06.2006 10:56:06
Dirk
Hallo,
der Inhalt von z.B. Zelle B5 sieht so aus "1, 2, 1, 1, 2, 1, 2"
In diesem Ausdruck stehen insgesamt ca. 300 Zustände.
Die Zustände werden nun in einem Makro benötigt, damit ein
.TextFileColumnDataTypes = Array(Zustände aus Zelle B5)
diese weiterverarbeiten kann.
Wenn ich einfach Array ("B5") angeben bringt er mir einen Fehler.
Gruß Dirk
Anzeige
AW: Argument eines Arrays aus einer Zelle auslesen
21.06.2006 15:58:21
fcs
Hallo Dirk,
mit der Methode Split gehts relativ einfach, allerdings gibt es diese evtl. noch nicht bei älteren Excel/VBA-Versionen. Getestet mit Excel 2003

Sub array_fuellen()
Dim arrParameter As Variant, strParameter As String, iI As Integer
strParameter = ActiveWorkbook.Sheets("Tabelle1").Range("B5")
'Entfernen der evtl. vorhandenen Anführungszeichen
If Left(strParameter, 1) = """" Then
strParameter = Mid(strParameter, 2)
End If
If Right(strParameter, 1) = """" Then
strParameter = Left(strParameter, Len(strParameter) - 1)
End If
'Zellinhalt in Array einlesen
arrParameter = Split(strParameter, ",")
'Test zum Auslesen des Arrays
For iI = 0 To UBound(arrParameter)
MsgBox arrParameter(iI)
Next
' Syntax bei Verwendung des Array (ungetestet)
With irgendwas
.TextFileColumnDataTypes = arrParameter
End With
End Sub

mfg
Franz
Anzeige
AW: Argument eines Arrays aus einer Zelle auslesen
22.06.2006 08:39:01
Dirk
Hallo Franz,
ich habe den Code bei mir eingefügt, jedoch gibt mit Excel dabei den Fehlercode aus:
"Ungültiger Prozeduraufruf oder ungültiges Argument"
Woran kann das liegen?
Gruß Dirk
AW: Argument eines Arrays aus einer Zelle auslesen
22.06.2006 11:29:05
fcs
Hallo Dirk,
wird der Fehlercode angezeigt, bevor das Makro startet oder wenn das Makro eine bestimmte Zeile erreicht?
Ich arbeite nicht soviel mit der Array-Funktion und Split. Mir ist beim Testen der Inhalte des mit Split erzeugten Arrays nur aufgefallen, dass die Variablen der Einzelinhalte immer den den Typ "vbString" haben. Selbst dann wenn ich die Inhalte in Ganzzahlen verwandle und zurückschreibe. Die Parameter müssen aber als Array aus Ganzzahlen (integer oder Long) an die Methode übergeben werden.
Da ich den kompletten Code nicht Testen kann, bliebe nur die Arraydaten in ein Integer-Array zu schreiben und das Integer-Array als Parameter zu übergeben. Ich hab aber keine Ahnung ob das funktioniert.
Hier der angepasste Code; die Testschleife zum Lesen der Array-Daten kannst du natürlich rausschmeißen.

Sub array_fuellen()
Dim arrParameter As Variant, strParameter As String, iI As Integer, Feld() As Integer
strParameter = ActiveWorkbook.Sheets("Tabelle1").Range("B5")
If Left(strParameter, 1) = """" Then
strParameter = Mid(strParameter, 2)
End If
If Right(strParameter, 1) = """" Then
strParameter = Left(strParameter, Len(strParameter) - 1)
End If
arrParameter = Split(strParameter, ",") 'Zellinhalt in Array einlesen
'  arrParameter = Array(1, 2, 2, 1, 2, 1) 'Test-Array mit Zahlen
'Test zum Auslesen des Arrays
For iI = 0 To UBound(arrParameter)
If IsNumeric(arrParameter(iI)) Then
MsgBox "Variablen-Typ: " & VarType(arrParameter(iI)) & " sollte 2 (Integer) oder 3 (Long) sein nicht 8 (String)" _
& vbLf & "Inhalt:" & arrParameter(iI) & " ist eine Zahl"
Else
MsgBox "Variablen-Typ: " & VarType(arrParameter(iI)) & " sollte 2 (Integer) oder 3 (Long) sein nicht 8 (String)" _
& vbLf & "Inhalt:" & arrParameter(iI) & " ist Text"
End If
Next
'Arraydaten, die als Strings vorliegen in ein Integer-Feld einlesen
ReDim Feld(0 To UBound(arrParameter))
For iI = 0 To UBound(arrParameter)
Feld(iI) = CInt(Val(arrParameter(iI))) ' Konversion der ggf. als String vorliegenden Zahlen
Next
With irgendwas
.TextFileColumnDataTypes = Feld()
End With
End Sub

mfg
Franz
Anzeige

333 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige