Sub TEST3()
'セルの値を取得
a = ActiveSheet.Cells(1, 1)
'改行が2個連続している場合ループ
Do While InStr(a, vbLf & vbLf) > 0
'2個の改行を、1個の改行に置換
a = Replace(a, vbLf & vbLf, vbLf)
Loop
'セルに値を入力
ActiveSheet.Cells(1, 1) = a
End Sub
ポイントは、「2個の改行を、1個の改行に置換する」をループすることです。
2個以上の改行をしたセルを用意しました。
2個以上の改行
VBAコードを実行します。
Replaceで2個以上の改行を削除
2個以上の改行を削除できました。
最後の改行コードを削除
次は、最後に改行がされている場合に、最後の改行を削除する方法です。
VBAコードは、次のようになります。
Sub TEST4()
'セルの値を取得
a = ActiveSheet.Cells(1, 1)
'最後の文字が改行の場合にループ
Do While Right(a, 1) = vbLf
'最後の1文字を削除
a = Left(a, Len(a) - 1)
Loop
'セルに入力
ActiveSheet.Cells(1, 1) = a
End Sub
ポイントは、「最後の改行を、空白""に置換する」をループすることです。
最後に改行されているセルを用意しました。
最後に改行がある
では、VBAコードを実行します。
最後の改行を削除
最後の改行を削除できました。
2個以上の改行コードと最後の改行コードを削除
2個以上の改行と、最後の改行を削除する方法です。
やり方は、シンプルに、先ほどの2つのVBAコードを組み合わせます。
Sub TEST5()
'セルの値を取得
a = ActiveSheet.Cells(1, 1)
'改行が2個連続している場合にループ
Do While InStr(a, vbLf & vbLf) > 0
'2個の改行を、1個の改行に置換
a = Replace(a, vbLf & vbLf, vbLf)
Loop
'最後の文字が、改行の場合ループ
Do While Right(a, 1) = vbLf
'最後の文字を消す
a = Left(a, Len(a) - 1)
Loop
'セルに入力
ActiveSheet.Cells(1, 1) = a
End Sub