Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
512to516
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
512to516
512to516
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

String anhand von Trennzeichen splitten

String anhand von Trennzeichen splitten
10.11.2004 14:37:59
Trennzeichen
Hallo,
folgendes Problem:
Ich lese aus einer (Log-)Datei (=Textdatei) zeilenweise.In jeder Zeile stehen durch Tabulatoren getrennt mehrere Werte.Diese Werte will ich in ein Array aufsplitten. Bei VB gibt's dafür ja den tollen Befehl Split, aber nicht bei VBA, da ist das irgendwas mit geteilten und nicht geteilten Fenstern (?) ...
Code ist soweit mal ganz banal:
Open dateipfad For Input As #1
Line Input #1, zwischenspeicher
Und nun möcht ich zwischenspeicher splitten, beim VB wäre das ja:
gesplittet = Split(zwischenspeicher,trennzeichen)
Also zB aus zwischenspeicher = "3,4,5" möchte ich dann gesplittet(1)="3", gesplittet(2)="4", gesplittet(3)="5" haben.
Wie geht das? (Bin schon halb am verzweifeln!)

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: String anhand von Trennzeichen splitten
Trennzeichen
Hi Frank

Sub t()
Dim strTest As String
Dim Arr(2) As Variant
strTest = "a,b,c"
Arr(0) = Left(strTest, InStr(strTest, ",") - 1)
strTest = Right(strTest, Len(strTest) - InStr(strTest, ","))
Arr(1) = Left(strTest, InStr(strTest, ",") - 1)
strTest = Right(strTest, Len(strTest) - InStr(strTest, ","))
Arr(2) = strTest
MsgBox Arr(0)
MsgBox Arr(1)
MsgBox Arr(2)
End Sub

Gruss
Chris
AW: String anhand von Trennzeichen splitten
10.11.2004 15:07:23
Trennzeichen
Danke,
das funktioniert schon mal! :)
Jetzt muss ich mir nur noch eine Funktion daraus basteln, damit auch die teilweise unterschiedlich langen Strings splitten kann ... :)
Anzeige
AW: String anhand von Trennzeichen splitten
Trennzeichen
die Funktion gibt es auch in VBA.
Split-Funktion
Beschreibung
Gibt ein nullbasiertes, eindimensionales Datenfeld zurück, das eine festgelegte Anzahl an untergeordneten Zeichenfolgen enthält.
Syntax
Split(expression[, delimiter[, limit[, compare]]])
AW: String anhand von Trennzeichen splitten
10.11.2004 15:01:46
Trennzeichen
Dann erklär mir mal einer warum in diesem Fall a immer leer ist?!
Dim a As Variant
Dim strExpression As String, strDelim As String
strExpression = "Hans||Erwin||Jens||Monika"
strDelim = "||"
a = Split(strExpression, strDelim)
AW: String anhand von Trennzeichen splitten
10.11.2004 15:39:32
Trennzeichen
Danke für die Hilfe, besonders an ChrisL, er hat mir entscheidend geholfen! :)
Als Dankeschön poste ich hier mal die fertige Funktion, damit andere es nicht so schwer haben.

Function teile(quelle As String, trenner As String)
Dim ergarray(999) As Variant    'Ergebniss des Splittens
'999 da offenes Array nicht erlaubt war
Dim pos As Integer              'Position im Array
Dim reststring As String        'restlicher zu verarbeitender String
reststring = quelle
pos = 0
While InStr(reststring, trenner) <> 0
ergarray(pos) = Left(reststring, InStr(reststring, trenner) - 1)
reststring = Right(reststring, Len(reststring) - InStr(reststring, trenner))
pos = pos + 1
Wend
ergarray(pos) = reststring
teile = ergarray
End Function

Anzeige
AW: String anhand von Trennzeichen splitten
Trennzeichen
Hi Frank
Danke für die Rückmeldung und den Code.
betreffend...
'999 da offenes Array nicht erlaubt war
mit "ReDim Preserve" kannst du kannst du das Array "vergrössern". Und wenn ich schonmal dran bin... mit UBound(Arr) kannst du die aktuelle Dimensionierung ermitteln.
Gruss
Chris
AW: String anhand von Trennzeichen splitten
10.11.2004 15:58:13
Trennzeichen
Heh, nochmals Danke! :)
So jetzt habe ich das nochmal umgeschrieben, pos rausgeschmissen und dafür Redim und UBound eingebaut ... Jetzt dürfte es "perfekt" dynamisch sein! :)
(Falls doch noch Fehler drin sind, bitte Bescheid geben!)

Function teile(quelle As String, trenner As String)
Dim ergarray() As Variant       'Ergebniss des Splittens
Dim reststring As String        'restlicher zu verarbeitender String
reststring = quelle
ReDim Preserve ergarray(0)
While InStr(reststring, trenner) <> 0
ergarray(UBound(ergarray)) = Left(reststring, InStr(reststring, trenner) - 1)
reststring = Right(reststring, Len(reststring) - InStr(reststring, trenner))
ReDim Preserve ergarray(UBound(ergarray) + 1)
Wend
ergarray(UBound(ergarray)) = reststring
teile = ergarray
End Function

Anzeige
AW: String anhand von Trennzeichen splitten
Trennzeichen
Hi Frank
Nach meinem Geschmack siehts jetzt perfekt aus ;-)
Gruss
Chris

28 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige