Jag har sökt i forumet och inte hittat precis vad jag vill ha. Du får efter 30 tecken kasta in vbCrLf så får du den funktionen. På keypress-händelsen får du räkna tecken, var 30:e så skall den bryta. Ett annat alternativ är att göra textrutan så bred att precis 30 tecken får plats så kommer den att sköta det åt dig.. Hej Jag har testat allt möjligt nu men det fungerar inte. Jag vill inte att boxen ska få ett visst mått för då byter han ju rad av sig själv och inte av att ett enternedslag. Jag ska nämligen skriva ut textboxen och då ska skrivaren byta rad när raden byts i textboxen och det gör skrivaren inte om raden bryts för att textboxen är slut. Här: Tack men antagligen är jag dum men det funkar inte. Vad ska textboxen heta och skall koden ligga på nåt särskilt ställe. hejByta rad i en textbox
Jag vill skriva i en multiline textbox och när jag skrivet in t.ex 30 tecken ska markören byta rad och hoppa till nästa utan att jag behöver göra något.Hur ?Sv: Byta rad i en textbox
/PelleSv: Byta rad i en textbox
Sedan måste man väl lägga in lite If så att om brytningen
sker mitt i ett ord avstavning med - sker eller att det sista
mellanslaget (space) betyder radbrytning.
tycker
SvenSv: Byta rad i en textbox
Finns det ingen som kan ge mig ett komplett kodförslag som fungerar.
Jag vill alltså skriva en text i en textbox och kanske använda
If Len(Text1.Text) > 20 Then
...och så vill jag ha radbrytningen och resen av texten fortsätta på nästa rad. Och så är det det att texten som kommer in kommer inläst genom en loop som öppnar en massa filer och stoppar in text från olika filer så funktionen fungerar nog inte med Keypreess utan måste nog ligga i Text1_Change.Sv: Byta rad i en textbox
<code>
Private Sub FixTextBox(t As TextBox, Length As Integer, Optional WholeWordsOnly As Boolean)
Dim iPos As Integer, iPos2 As Integer
Dim iChars As Integer, sText As String
Dim iMax As Integer
sText = t.Text
iMax = Len(sText)
If iMax = 0 Then Exit Sub
Do
iPos = iPos + 1
If iPos = iMax Then Exit Do
iChars = iChars + 1
If Mid$(sText, iPos, 2) = vbCrLf Then iChars = 0
If iChars = Length Then
If WholeWordsOnly Then
iPos2 = iPos
Do While Mid$(sText, iPos2, 1) <> " "
iPos2 = iPos2 - 1
If iPos2 = 0 Then
iPos2 = 30: Exit Do
ElseIf Mid$(sText, iPos2, 2) = vbCrLf Then
iPos2 = iPos: Exit Do
End If
Loop
iPos = iPos2
End If
sText = Left$(sText, iPos) & vbCrLf & Right$(sText, Len(sText) - iPos)
iMax = iMax + 2
iPos = iPos + 2
iChars = 0
End If
Loop
t.Text = sText
End Sub
</code>
<br>
Jag orkade inte kommentera. hoppas du förstår det ändå.
<br>
/Niklas JanssonSv: Byta rad i en textbox
Sv: Byta rad i en textbox
eftersom suben är private måste den ligga i samma formulär som du
har textboxen, vill du lägga den i en modul går det bra, men då måste
du ändra private till public.
headern:
Private Sub FixTextBox(t As TextBox, Length As Integer, Optional WholeWordsOnly As Boolean)
dvs du anropar din sub och skickar med din textbox in, skickar in hur lång
raden får vara i inparameter två och i trean skickar du in true eller false
beroende på om raden får brytas mitt i ett ord eller ej.
hoppas det löser sig.
/Emma