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