Intstr Probleme (token)

w@rli

Grünschnabel
Hallo Leutz

ich bastele mir gerade ein Macro in VB und stecke dort etwas fest.
Normaler weise schreibe ich C++ und Java, wollte das aber mal mit VB machen.

Also ich lese aus einer excel datei (csv) aus und packe das alles in einen array.
Das klappt auch alles :)

Mein Code:
Code:
 Dim MyBuffer(50) As String
    Dim i As Integer
    i = 0
    
    Open "test.csv" For Input As #1
    
    Do While Not EOF(1)
    Line Input #1 MyBuffer(i)
   UserForm1.ComboBox1.AddItem MyBuffer(i)
    i = i + 1
    Loop

Nun steht in meiner ComboBox1 der Inhalt aus der "test.csv".
Die csv Datei ist ja ein Text Format und der Inhalt ist mit einem ";" getrennt.

Beispiel Inhalt csv Datei:
123;Test;009
321;google;112

Mein Vorhaben ist es nun die Combobox1 mit nur zB den ersten beiden Werten der csv zu füllen.

In c++ und java gibt es ja dafür so einen Tokennizer
und in VB habe ich gelesen soll es Intstr,Mid,Len,Right,Left geben, aber damit komme ich irgendwie noch nicht so klar :)

Hier mal meine Vorstellung in Code:
Code:
Dim MyBuffer(50) As String
    Dim i As Integer
    i = 0
    
    Open "test.csv" For Input As #1
    
    Do While Not EOF(1)
    Line Input #1 MyBuffer(i)
    
    --------
    Hier nun Tokenizer auf ";" von MyBuffer(i)
    Wert1 = ergebnis Token1
    Wert2 = ergebnis Token2
    Wert3 = ergebnis Token3

    ComboboxItem = Wert1 + " " + Wert2
    --------
  
   UserForm1.ComboBox1.AddItem ComboboxItem
    i = i + 1
    Loop

Für jeden Vorschlag wäre ich sehr dankbar
Danke
Warli
 
mein Vorschlag

Dim tempstr$

'--------
'Hier nun Tokenizer auf ";" von MyBuffer(i)

tempstr = MyBuffer(i)
Wert1 = Left(tempstr, InStr(1, tempstr, ";", vbTextCompare) - 1)
tempstr = Right(tempstr, Len(tempstr) - Len(Wert1) - 1)
Wert2 = Left(tempstr, InStr(1, tempstr, ";", vbTextCompare) - 1)
tempstr = Right(tempstr, Len(tempstr) - Len(Wert2) - 1)
Wert3 = Right(tempstr, Len(tempstr) - Len(Wert2) - 1)

'--------

MfG Pierre Reymann
 
Ab VB6 gibts auch ne split funktion die gibt n array von strings zurück
Code:
Dim Werte() as string
Werte = split(MyBuffer(i),";")
Dann haste anstatt Wert1 halt Werte(0) usw.
 
Zuletzt bearbeitet:
Zurück