Herbers Excel-Forum - das Archiv
String aufspalten
Betrifft: String aufspalten
von: Andy
Geschrieben am: 15.02.2005 17:53:51
Hey Leute,
ich hab n Problem an dem ich heute schon recht lange ergebnislos herumgegrübelt
hab, vielleicht kann mir hier ja wer helfen:
Ich Hab einen string, der aus einer Reihe von Dateinamen(mit Endungen) besteht,
die durch einen Beistrich und ein Leerzeichen miteinander getrennt sind.
z.B. str = "xyz.txt, abc.txt, stuvw.txt"
um die datein in Excel importieren zu können brauch ich ein Feld von strings das jeweils einen dateinamen enthält. Soweit wars ja auch kein problem am PC mit
Split(string) den string aufzuteilen und mit Left(...) aus jedem string im feld den beistrich rauszulöschen.
Leider bin ich aber gezwungen auf nem Mac zu arbeiten. Und der kennt die
Split-Funktion nicht. Angäblich weil VBA am Mac auf VB5 basiert und unter Windows VB6 verwendet wird.
Hat irgendjemand von euch ein idee wie man den string noch aufspalten könnte?
thx auf jeden fall
Andi
Betrifft: AW: String aufspalten
von: Jürgen Schaetzke
Geschrieben am: 15.02.2005 18:38:48
Hallo Andi,
hier gibts eine Split Funktion für VB4 / VB 5:
http://www.vbarchiv.net/archiv/tipp_details.php?pid=463
Ciao Jürgen
Betrifft: AW: String aufspalten
von: bst
Geschrieben am: 15.02.2005 18:46:49
Hallo Andi,
Die VBA-Funktion split gibt's mindestens seit xl2000.
cu, Bernd
--
Sub TrennMich()
Dim s As String, x() As String, i As Integer
s = "xyz.txt, abc.txt, stuvw.txt"
x = Split(s, ", ")
For i = 0 To UBound(x)
Debug.Print i, x(i)
Next
End Sub
Betrifft: AW: String aufspalten
von: bst
Geschrieben am: 16.02.2005 08:35:58
Morgen,
und Sorry, wer lesen kann ist halt klar im Vorteil :-(
Versuch mal sowas. Keine Ahnung ob's auf einem Mac funktioniert.
Kann im Gegensatz zu oben erwähnten Teil auch Trenner mit mehr als einem Zeichen.
cu, Bernd
--
Option Explicit
Function mySplit(src As String, Optional trenner As String = " ") As String()
Dim i As Integer, pos As Integer
Dim erg() As String
ReDim erg(0)
i = 0
erg(i) = src
pos = InStr(erg(i), trenner)
While pos > 0
ReDim Preserve erg(i + 1)
erg(i + 1) = Mid(erg(i), pos + Len(trenner))
erg(i) = Left(erg(i), pos - 1)
i = i + 1
pos = InStr(erg(i), trenner)
Wend
mySplit = erg
End Function
Sub Test()
Dim i As Integer
Dim s As String
Dim x() As String
s = "1, 2, 3"
x = mySplit(s, ", ")
For i = 0 To UBound(x): Debug.Print i, x(i): Next
s = "vier fünf sechs"
x = mySplit(s)
For i = 0 To UBound(x): Debug.Print i, x(i): Next
End Sub