HERBERS Excel-Forum - die Dialoge

Thema: TextBox-Inhalt aufteilen

Home
Abbildung - TextBox-Inhalt aufteilen
TextBox-Inhalt aufteile
  • Prozedur: UserForm_Initialize
  • Art: Ereignis
  • Modul: Klassenmodul der UserForm
  • Zweck: TextBox mit einer Zeichenfolge mit Zeilenumbrüchen füllen
  • Ablaufbeschreibung:
    • TextBox einen Wert zuweisen
    • Fokus auf Schaltfläche cmdEintragen setzen
  • Code:

    
    Private Sub UserForm_Initialize()
        txtText.Text = _
            "Hans W. Herber" & vbCr & _
            "Im Schönblick 5" & vbCr & _
            "53567 Asbach" & vbCr & _
            "https://www.herber.de" & vbCr & _
            "herber@herber.de"
        cmdEintragen.SetFocus
    End Sub
    
  • Prozedur: cmdEintragen_Click
  • Art: Ereignis
  • Modul: Klassenmodul der UserForm
  • Zweck: TextBox-Inhalt aufteilen und zeilenweise einlesen
  • Ablaufbeschreibung:
    • Variablendeklaration
    • TextBox-Inhalt an eine String-Variable übergeben
    • LineFeeds aus der String-Variablen entfernen
    • Schleife bilden
    • Zeilenzähler um 1 hochzählen
    • Wenn die String-Variable einen Zeilenumbruch enthält...
    • Den Teil der Zeichenfolge bis zum Zeilenumbruch in die Zelle eintragen
    • Die String-Variable um den eingetragenen Teil und den ersten Zeilenumbruch verkürzen
    • Sonst...
    • String-Variable in die Zelle eintragen
    • Schleife verlassen
    • UserForm schließen
  • Code:

    
    Private Sub cmdEintragen_Click()
       Dim iRow As Integer
       Dim sTxt As String
       sTxt = txtText.Text
       sTxt = WorksheetFunction.Substitute(sTxt, vbLf, "")
       Do
          iRow = iRow + 1
          If InStr(sTxt, vbCr) Then
             Cells(iRow, 1).Value = Left(sTxt, InStr(sTxt, vbCr) - 1)
             sTxt = Right(sTxt, Len(sTxt) - InStr(sTxt, vbCr))
          Else
             Cells(iRow, 1).Value = sTxt
             Exit Do
          End If
       Loop
       Unload Me
    End Sub
    
Da ab Excel-Version 9.0 (Office 2000) die VBA-Funktion Split unterstützt wird, kann der Code dort vereinfacht werden:
  • Prozedur: cmdEintragen_Click
  • Art: Ereignis
  • Modul: Klassenmodul der UserForm
  • Zweck: TextBox-Inhalt aufteilen und zeilenweise einlesen
  • Ablaufbeschreibung:
    • Variablendeklaration
    • TextBox-Inhalt an eine String-Variable übergeben
    • LineFeeds aus der String-Variablen entfernen
    • Schleife über die Elemente des Arrays bilden
    • Datenfeld in Zelle eintragen
    • UserForm schließen
  • Code:

    
    Private Sub cmdEintragen_Click()
       Dim arr As Variant
       Dim iRow As Integer
       Dim sTxt As String
       sTxt = txtText.Text
       sTxt = WorksheetFunction.Substitute(sTxt, vbLf, "")
       arr = Split(sTxt, vbCr)
       For iRow = 0 To UBound(arr)
          Cells(iRow + 1, 1).Value = arr(iRow)
       Next iRow
       Unload Me
    End Sub