AW: LZ-Fehler 458, Variable verwendet nicht unterstüt
24.03.2011 17:36:31
Reinhard
Hallo Rudi,
ich möchte in eine Textdatei ein mehrdimensionales Array schreiben und wieder auslesen.
Dazu fand ich den nachstehenden VB-Code und habe mir den umgewandelt
http://www.vbarchiv.net/tipps/tipp_1093-array-schnell-speichern-und-wieder-laden.html
Den habe ich mir umgeschrieben. Gut, "If (Not Not MyArray) > 0 Then" irritiert mich", aber er funktioniert.
Den Fehler weshalb ich hier anfragte konnte ich inzwischen selbst finden, habe aber noch getestet ob er wirklich weg ist, inzwischen hast du schon geantwortet.
Es lag bei mir an
Private Sub Workbook_Open()
Dim MyArray() As String
So funktionierst es:
Private Sub Workbook_Open()
Dim MyArray As Variant
Danke ^ Gruß
Reinhard
' Array in Datei speichern
Public Sub SaveArray(ByVal sFile As String, _
vArray As Variant)
Dim F As Integer
Dim nCount As Long
' Falls Datei vorhanden, zunächst löschen
If Dir$(sFile) "" Then Kill sFile
' Datei im Binary-Mode öffnen
F = FreeFile
Open sFile For Binary As #F
' Anzahl Elemente speichern
nCount = UBound(vArray)
Put #F, , nCount
' Array-Elemente speichern
Put #F, , vArray
Close #F
End Sub
' Array aus Datei einlesen
Public Function ReadArray(ByVal sFile As String) As Variant
Dim F As Integer
Dim nCount As Long
Dim vArray As Variant
' Datei im BinaryMode öffnen
If Len(Dir$(sFile)) > 0 Then
F = FreeFile
Open sFile For Binary As #F
' Anzahl Elemente lesen
Get #F, , nCount
' Array dimensionieren und einlesen
ReDim vArray(nCount)
Get #F, , vArray
Close #F
End If
ReadArray = vArray
End Function
'String-Array erstellen und in Datei speichern
ReDim MyArray(10) As String
Dim i As Long
For i = 0 To 10
MyArray(i) = "Zeile " & CStr(i)
Next i
' Array speichern
SaveArray App.Path & "\MyArray.dat", MyArray
'Array aus Datei einlesen
Dim MyArray() As String
MyArray = ReadArray(App.Path & "\MyArray.dat")
' Ist das Array dimensioniert?
If (Not Not MyArray) > 0 Then
' Inhalt zum Test in einer ListBox anzeigen
Dim i As Long
Dim nCount As Long
nCount = UBound(MyArray)
For i = 0 To nCount
List1.AddItem MyArray(i)
Next i
End If