|
こんな感じでしょうか。ただし試してみたら改行が余計に入るみたいです。
私が改行の扱いをよく理解していないためだと思いますが時間がないので
とりあえずここまでとします。
参考としてください。またこの方法が最善と言うわけではありませんのでこれに拘らずに効率のよい方法で作成してください。
Private Sub TextBox1_Change()
Dim i As Long, j As Long
Dim txt1 As String, txt2 As String, txt3 As String
Dim TAry As Variant
Dim Ttmp As Variant
Dim n As Integer
'UserForm上のEvent無効化不可対策
If TextBox1.Tag = "False" Then Exit Sub
'文字数設定
n = 10
txt1 = TextBox1.Text
'文字列の整理"vbCrLf"の消去
TAry = Split(txt1, vbCrLf)
'n文字以下の改行チェック
For i = 0 To UBound(TAry, 1)
txt2 = txt2 & TAry(i)
If Len(TAry(i)) < 10 And i <> UBound(TAry, 1) Then
'文字列の改行"vbCrLf"の追加
txt2 = txt2 & vbCrLf
For j = Len(txt2) To 1 Step -1
If j Mod n = 0 Then
txt2 = Left(txt2, j) & vbCrLf & Right(txt2, Len(txt2) - j)
End If
Next j
txt3 = txt3 & txt2
txt2 = ""
ElseIf i = UBound(TAry, 1) Then
For j = Len(txt2) To 1 Step -1
If j Mod n = 0 Then
txt2 = Left(txt2, j) & vbCrLf & Right(txt2, Len(txt2) - j)
End If
Next j
txt3 = txt3 & txt2
End If
Next i
'UserForm上のEvent無効化不可対策
Call Set_Text(txt3)
End Sub
|
|