vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Controls · TextBox & RichTextBox   |   VB-Versionen: VB4, VB5, VB627.08.01
Bestimmte Zeile einer TextBox ermitteln

Zeigt, wie sich eine bestimmte Zeile einer MutliLine-TextBox anhand einer Zeilennummer ermitteln lässt.

Autor:   Thomas BannertBewertung:     [ Jetzt bewerten ]Views:  21.190 
ohne HomepageSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Die nachfolgende Funktion gibt den Inhalt einer durch eine Zeilennummer angegebene Zeile einer MultiLine-TextBox zurück.

Ist die Zeile nicht vorhanden, d.h. die TextBox enthält weniger Zeilen, so wird ein Leerstringzurückgegeben.

' Übergabeparameter TextBox ist eine Multiline Textbox
Public Function GetLineFromTB(TextBox As TextBox, _
  lLine As Long) As String
 
  Dim lLineCount As Long
  Dim lLineEnd As Long
  Dim sLine As String
  Dim sTemp As String
 
  ' Ist das überhaut eine Multiline Textbox?
  If TextBox.MultiLine Then
    lLineCount = 0 ' Zähler für die Zeilen
    sTemp = TextBox.Text
 
    While sTemp <> "" And lLineCount <> lLine
      lLineCount = lLineCount + 1
      lLineEnd = InStr(sTemp, vbCrLf)
      If lLineEnd > 0 Then
        ' aktuelle Zeile ermitteln
        sLine = Left$(sTemp, lLineEnd - 1)
        sTemp = Mid$(sTemp, lLineEnd + 2)
      Else
        ' letzte Zeile
        sLine = sTemp: sTemp = ""
      End If
    Wend
 
    If lLineCount <> lLine Then
      ' Zeile nicht gefunden
      sLine = ""
    End If
  End If
 
  GetLineFromTB = sLine
End Function

Beispiel:

Text1.Text = "Dies ist eine mehrzeile Nachricht" & _
  vbCrLf & vbCrLf & _
  "Zeile 3" & vbCrLf & "Zeile 4"
 
MsgBox GetLineFromTB(Text1, 3)  ' Zeile 3

Unter Visual Basic 6...
lässt sich das ganze etwas einfacher realisieren. Hier sollte man die Split-Funktion verwenden:

Public Function GetLineFromTB(TextBox As TextBox, _
  lLine As Long) As String
 
  Dim sLines() As String
  sLines = Split(TextBox.Text, vbNewLine)
  If lLine - 1 <= UBound(sLines) Then
    GetLineFromTB = sLines(lLine - 1)
  End If
End Function