セル内の文字を指定された文字数で改行する関数です。
セル内で一行の文字数を決めたい場合、セルの幅の影響を受けてなかなか思った通りの文字数にならない事があります。
そこで、文字数を指定して改行をする関数を作りました。
VBEの標準モジュールに下のコードを登録して「Excelマクロ有効フォーム」で保存してください。
関数の登録方法は⇒♯000 ユーザー定義関数を登録する方法
登録されたら、シート上からユーザー関数「RineSplit」が使用できます。
使い方は
ワークシート上で =RineSplit (文字列)の関数として使用できます。
【例】
セル A1
拝啓、日頃は弊社業務にご協力いただきありがとうございます。
RineSplit (A1,10) → 拝啓、日頃は弊社業務
にご協力いただきあり
がとうございます。
※セル内で、全角10文字ずつ改行コードが入り3行になります。
Function RineSplit(S As String, R As Long)
’セル内の文字を指定された文字数で改行する関数
’ RineSplit(文字列, 一行の文字数)
’ RineSplit(“あいうえおかきくけ”,6) → あいうえお
’ かきくけ
On Error GoTo EXITFUN
Dim i1 As Long
Dim i2 As Long: i2 = 1
Dim L As Long
Dim St As Long: St = 1
Dim Lfn As Long
Dim Lfp
Dim SE As String
Dim L1 As String
Dim L2 As String
R = R * 2
SE = S
Lfn = (LenB(SE)- LenB(Replace(SE, vbLf, “”))) / 2
If Lfn > 0 Then
ReDim Lfp(1 To Lfn)
For i1 = 1 To LenB(SE)
If MidB(SE, i1, 2) = vbLf Then
If i2 = 1 Then
Lfp(i2) = i1
Else
Lfp(i2) = i1- Lfp(i2- 1)
End If
If Lfp(i2) Mod 2 = 1 And i2 = 1 Then
Lfp(i2) = Lfp(i2)- 1
ElseIf Lfp(i2) Mod 2 = 1 Then
Lfp(i2) = Lfp(i2)- 3
End If
i2 = i2 + 1
End If
Next
End If
SE = Replace(SE, vbLf, “”)
i2 = 1
For i = 1 To 100
If Lfn = 0 Or i2 > Lfn Then
L1 = MidB(SE, 1, R)
ElseIf Lfp(i2) < R Then
L1 = MidB(SE, 1, Lfp(i2))
i2 = i2 + 1
Else
L1 = MidB(SE, 1, R)
Lfp(i2) = Lfp(i2)- R
End If
If LenB(L1) Mod 2 = 1 Then
L1 = L1 & ” “
End If
SE = MidB(SE, LenB(L1) + 1)
If L2 = “” Then
L2 = L1
Else
L2 = L2 & vbLf & L1
End If
If Len(SE) = 0 Then
Exit For
End If
Next
RineSplit = L2
EXITFUN:
End Function
ここで紹介したコード使用による損害に対しては一切責任は負えません。