Bestimmte Zeile in Textbox Wiedergeben

F

FooFighter31

Hallo!

Ich habe vor Jahren schon mit VB gearbeitet, aber nun da ich etwas machen möchte, hab ich ein Problem.
Ich habe eine Multiline-textbox. Dort wird per copy-paste immer die gleiche anzahl an zeilen eingegeben.
Ich möchte jetzt immer die 3 werte aus der 4. Zeile in 3 verschiedene labels ausgeben.
die werte sind zahlen von 0 bis n

sieht zB so aus

zeile
zeile
zeile
wert1 wert2 wert3
zeile
zeile
...

Mein Problem:
Ich schaffe es nicht die 3 werte aus der Zeile herauszufischen..
kann mir dabei bitte jemand helfen?

Grüße,
Foo
 
Da bietet sich mal schnell Split an:
Visual Basic:
Dim sZeilen() As String, sWerte() As String
sZeilen = Split(Textbox1.Text, vbNewLine)
sWerte = Split(sZeilen(3), " ") 'Wenn die Werte mit Space getrennt sind, sonst da entsprechende Trennzeichen einsetzen
'Jetzt hast du im Array sWerte (von 0-2) deine Werte, die du ausgeben kannst


Der Doc!
 
ok... ich raffs nicht ^^
ich habe jetzt folgendes:

Private Sub Text1_Change()

Dim Wert1
Wert1 = Array(0)

Dim sZeilen() As String, sWerte() As String
sZeilen = Split(Text1.Text, vbNewLine)
sWerte = Split(sZeilen(3), " ")

Label1.Caption = Wert1(0)


End Sub

Label1 gibt mir aber den Wert "0" aus. Wert1 sollte aber "4723" sein.

Oder soll ich da mit varWert1 arbeiten?

übrigens sind die Werte 1 - 3 so aufgebaut:
Wert1[leerzeichen][leerzeichen][tabulator]Wert2[leerzeichen][leerzeichen][tabulator]Wert3


tut mir leid, wegen den blöden fragen - ich hoffe, ihr habt geduld mit mir -.-

Grüße,
Foo
 
Dein Wert1(0) ist da irgendwie fehl am Platz, mal davon abgesehen, dass du im zweiten Split ja auch deine Trennzeichen anpassen musst:
Visual Basic:
Private Sub Text1_Change()

Dim sZeilen() As String, sWerte() As String

sZeilen = Split(Text1.Text, vbNewLine)
sWerte = Split(sZeilen(3), "  " & vbTab) 'ich hoffe, vbTab ist auch unter VB6 der Tabulator, sonst einfach in der Hilfe nachsehen

Label1.Caption = sWerte(0) '0 für den ersten Wert

End Sub


Der Doc!
 
danke, jetzt klappts!
das &vbTab funktioniert auch, hab ich aber oben noch nicht eingetragen, da ich's nur mal mit dem ersten wert versuchen wollte.

Hab irgendwie verpeilt, dass ich da keine extra Dim mehr angeben muss..

Vielen Dank für die Hilfe!
Hat mir unheimlich weitergeholfen! :)
 
so... ich hab alles richtig, was ich noch so gebraucht hab. jetzt möchte ich aber noch eine zeile auslesen. und zwar die zeile 25 (inkl. 0).
Aber diese eine Zeile hat einen anderen Aufbau:
Wort[Tab]Wert25

Private Sub Text1_Change()

Dim sZeilen() As String, sWerte() As String

sZeilen = Split(Text1.Text, vbNewLine)
sWerte = Split(sZeilen(25), " " & vbTab)

Wert1.Text = sWerte(0)
Wert2.Text = sWerte(1)
Wert3.Text = sWerte(2)
Wert25.Text = sWerte(25)

End Sub

jetzt sagt er mir aber "index außerhalb des gültigen bereichs" und markiert mir
"Wert2.Text = sWerte(1)"

und wieder versteh ich das nicht.. -.-
mit "sWerte = Split(sZeilen(25)" werden ja 26 Zeilen ausgelsen, oder!?
und mit "WertX.Text = sWerte(x)" wird die so-und-so-vielte Zeile wiedergegeben, oder!?

bitte, noch mal um hilfe (auch wenn ich mir schon etwas blöd vorkomme...) :/
 
Gehen wir das ganze mal schrittweise durch:
Visual Basic:
sZeilen = Split(Text1.Text, vbNewLine)
Hier wird der gesamte Text in Zeilen geteilt und zeilenweise in ein Array geschrieben

Visual Basic:
sWerte = Split(sZeilen(25), " " & vbTab)
Hier wird eine Zeile (in diesem Fall die Zeile 26, durch den 0-Index hat sie die Nummer 25) getrennt, dabei sind die Zeichen, an denen getrennt wird wichtig. Du musst dir ansehen, wie die einzelnen Werte in der Zeile getrennt sind.

In deinem Fall wird es so sein, dass in der Zeile 26 die einzelnen Werte irgendwie anders getrennt sind, daher gibt es den Eintrag sWerte(0), in dem befindet sich aber nun deine ganze Zeile. Der Aufruf von sWerte(1) erzeugt daher die Fehlermeldung, aufgrund deiner Trennzeichen hat Split nur ein Array mit der Dimension 0 erzeugen können.

Zeig doch mal, die wie Zeile 26 (also 25 inkl. 0) aussieht.


Der Doc!
 
Hier ist die Zeile:
Geo 10 Mat 20

also "Geo[Tabulator]10[Leerzeichen][Tabulator]20"
 
In dem Fall ist also nur ein Tabulator für diese Zeile dein Trennzeichen, die überflüssigen Leerzeichen am Anfang und Ende kriegst du mit Trim() weg.
Visual Basic:
Private Sub Text1_Change()

Dim sZeilen() As String, sWerte() As String

sZeilen = Split(Text1.Text, vbNewLine)
sWerte = Split(sZeilen(25), vbTab)

Wert1.Text = sWerte(0)
Wert2.Text = Trim(sWerte(1))
Wert3.Text = sWerte(2) 'du hast deiner Beschreibung nach in dieser Zeile nur 3 Werte

End Sub


Der Doc!
 

Neue Beiträge

Zurück