Servus,
ich bin mit Arrays und Schleifen noch nicht ganz so vertraut. Beides einzeln geht noch, aber die Kombination aus beidem fällt mir noch etwas schwer...
Ich möchte den Text einer UserForm.TextBox in Zellen schreiben und zwar so, dass die Absätze beibehalten werden und ein Zeilenumbruch generiert wird, wenn eine maximale Spaltenbreite überschritten wird.
Für die Absätze habe ich was gefunden, das ich zwar nicht ganz verstehe, aber funktioniert:
1 2 3 4 5 6 7 8 | <em>Text = WorksheetFunction.Substitute(UserForm1.TextBox1.Text, vbLf, "" )
Textfeld = Split(Text, vbCr)
For Zeile = 0 To UBound(Textfeld)
ThisWorkbook.Worksheets( "Tabelle1" ).Cells(Zeile + 1, 1).Value = Textfeld(Zeile)
Next Zeile</em>
|
Der nimmt die Absätze mit, schreibt aber bis zum nächsten Absatz in die gleiche Zeile.
Für die Zeilenumbrüche hab ich was gebastelt, sogar mehrere Ansätze verfolgt, nur in Kombination bringe ich es nicht.
1 2 3 4 5 6 7 8 9 10 11 | <em> If ThisWorkbook.Worksheets( "Tabelle1" ).Columns( "A:A" ).ColumnWidth > 200 Then
Do
Characters = Characters - 1
ThisWorkbook.Worksheets( "Tabelle1" ).Range( "A" & Zeile) = Left(Text, Characters)
ThisWorkbook.Worksheets( "Tabelle1" ).Columns( "A:A" ).EntireColumn.AutoFit
Loop Until Not ThisWorkbook.Worksheets( "Tabelle1" ).Columns( "A:A" ).ColumnWidth > 200 And Right(Left(Text, Characters), 1) = " "
End If
Zeile=Zeile+1</em>
|
Besser wäre es wohl, im ersten Code, statt direkt in die Zelle zu schreiben, die Strings an den Leerzeichen nochmal zu splitten, und dann nur so lange zusammenzufügen, bis die maximale Spaltenbreite überschritten ist und dann eine neue Zeile anzufangen. Habe ich leider bisher nicht geschafft und wäre für Hilfe dankbar.
Viele Grüße
Aqualung
|