AW: Nach x Zeichen neue Zeile in Textbox
06.09.2010 12:12:36
JogyB
Hallo Gegga,
probier das mal aus... hat ein wenig länger gedauert, weil ich gleich in der TextBox mit vbLf arbeiten wollte, nur das wird beim Eintrag automatisch zu vbCrLf, was dann Probleme macht... und ich habe lange rumgerätselt, was da eigentlich falsch läuft ;)
Private Sub CommandButton1_Click()
' Ersetzt das vbNewLine durch ein vbLf, kann beim Druck sonst Probleme machen
' (Steuerzeichen am Ende der Zeile(
ThisWorkbook.Sheets("ANFR").Cells(63, 14).Value = Replace(TextBox1.Value, vbNewLine, vbLf)
' Geht hier dann gleich raus
Unload Me
End Sub
Private Sub TextBox1_Change()
Dim myString As String
Dim foundBlank As Long
Dim lastBlank As Long
Dim umBruch As Long
Dim i As Long
Static inUse As Boolean
If inUse Then Exit Sub
' Alle Zeilenumbrüche weg
myString = Replace(TextBox1.Value, vbNewLine, " ")
' Wenn Textlänge > 40 oder schon ein Umbruch vorhanden
If Len(myString) >= 40 Or CBool(InStr(TextBox1.Value, vbNewLine)) Then
foundBlank = InStr(1, myString, " ")
While foundBlank 0
' Wenn mehr als 40 Zeichen zu letztem Umbruch
If foundBlank - umBruch > 40 Then
myString = Left(myString, lastBlank - 1) & vbNewLine & _
Mid(myString, lastBlank + 1)
umBruch = lastBlank
End If
lastBlank = foundBlank
foundBlank = InStr(foundBlank + 1, myString, " ")
Wend
' Nun noch nachschauen, ob am Ende ein Umbruch notwenig ist
If Len(myString) - umBruch >= 40 And lastBlank Len(myString) Then
myString = Left(myString, lastBlank - 1) & vbNewLine & Mid(myString, lastBlank + 1)
End If
inUse = True
TextBox1.Value = myString
inUse = False
End If
End Sub
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Len(Replace(TextBox1.Value, vbLf, " ")) >= 179 Then
KeyAscii = 0
Call MsgBox("Maximale Zeichenzahl erreicht!", vbExclamation)
End If
End Sub
Die Namen der Controls musst Du natürlich noch anpassen.
Gruß, Jogy