Hallo, in die Runde,
seit kurzem beschäftige ich mich mit Arrays und komme bei einer Herausforderung nicht weiter. Ich hoffe, ihr könnt mir einen Tipp geben.
Eine Exceldatei hat 999.999 Einträgen in Reiter 1 (dann fängt mit einer Schleife ein neuer Reiter an, ist hier aber nicht relevant).
Diese Liste wurde aus einer txt-Datei zeilenweise importiert und ist somit als Text in Spalte A (zeile 1 - 999.999) vorzufinden.
Dieser Text in Spalte A soll auf mehrere Spalten gesplittet werden.
Allerdings kann das Komma nicht verwendet werden, da es in einem String vorhanden ist, der nicht getrennt werden darf.
Also muss, nachdem Spalte A komplett in das Array "Zahl" geschrieben wurde, jede Zeile in dem Array Zahl bearbeitet werden:
Das Array "ersetzen" listet Zeichenkombination auf. Diese sollen je Eintrag im Array Zahl durch ein Semikolon ersetzt werden.
Das sieht so aus:
For g = 0 To UBound(ersetze)
zahl(i).Replace ersetze(g), ";"
Next g
Als Fehlermeldung kommt:
Laufzeitfehler 424: Objekt erforderlich
Ehrlich gesagt, sieht es schlüssig aus. Aber ein Objekt scheint zu fehlen oder nicht ausreichend deklariert zu sein.
Für den jeden Hinweis bin ich sehr dankbar.
Nachfolgend der Code (auch als Anhang beigefügt)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub dyn_Arr()
'Das Array selbst
Dim zahl() 'noch keinen Wert zuweisen, da es dynamisch sein soll, es wird daherr im Lokalfenster noch nicht als Array erkannt
'Die Variable
Dim size As Long 'wie lang Array sein
'Laufvariable für Schleife
Dim i As Long
Dim g As Byte
Dim n As Byte
'Weise Variable size den Wert zu, wieviel Einträge in Spalte A des ersten Reiters vorhanden sind
size = WorksheetFunction.CountA(Worksheets(1).Columns(1))
'Anpassen der Länge des Arrays
ReDim zahl(size)
'Vorschleife, um einzelnen Arraypunkten Werte mitzugeben
For i = 1 To size
zahl(i) = Cells(i, 1).Value 'jede Zeile im Array einen Wert aus Worksheet zuordnen
Next i
''''''''''''''''
Bis hierhin funktioniert alles
''''''''''''''''
'Beginn das Array zu bearbeiten
For i = 1 To UBound(zahl, 1)
'Der Inhalt je Zeile aus Spalte soll in Spalten getrennt werden
'Allerdings kann das Komma nicht genommen werden, da es teilweise in einem geschlossenen String vorkommt. Daher müssen folgende Zeichenkombinationen mit einem Semikolon ersetzt werden
'Bereite Trennzeichen vor
'Neues Array
ersetze = Array("""", ";,;", ";,", ",;")
''''''''''''
das Lokalfenster erkennt ersetze als Array,
''''''''''''
'Für jeden Eintrag im Array zahl soll eine Schleife laufen, um die Zeichenkombinationen durch ein ; zu ersetzen
For g = 0 To UBound(ersetze)
''''''''''''''''''''
die nachfolgenden Zeile generiert den Laufzeitfehler
''''''''''''''''''''
zahl(i).Replace ersetze(g), ";"
Next g
'Trenne anschließend Text in Spalten
Text = zahl(i)
einzelneWorte = Split(Text, ";")
For n = 0 To UBound(einzelneWorte)
ActiveSheet.Cells(i, n + 10) = einzelneWorte(n)
Next n
Next i
End Sub
Besten Dank und Grüße,
Chriss7819
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP