vbNewLineとは
vbNewLineはWindowsとMacの両方で使用できる改行のための定数。
昔はWindowsおよびMacの定数は以下のように別れていたが、現在は共通して使用可能な定数が用意されている。
定数 | 値 | OS |
---|---|---|
vbCrLf | Chr(13) + Chr(10) | Windows |
vbCr | Chr(13) | Mac |
vbNewLine | Chr(13) + Chr(10) or Char(13) | Windows or Mac |
そのためセルに文字列と改行を入れたい場合はvbNewLineを使用すればWindowsとMacのどちらのMicrosoft Excelを使用しても改行が挿入される。
Sub test()
Range("A1") = "foo" & vbNewLine & "bar"
End Sub
vbNewLineはReplaceでは使用できない
便利な定数だがReplaceで置換することはできないので注意が必要。
例えば先ほどの改行入りのfoo barの改行をbrタグに置換したい場合はReplaceを使用することになるが、vbNewLineを"<br>"に置換するよう指定してもWindowsだと置換されない。
WindowsとMacで置換内容を変える関数
この問題はWindowsとMacで置換する改行コードを出し分ける関数を作成して利用すれば解決できる。
やり方は「If Application.OperatingSystem Like "*Windows*"」でOSがWindowsか判定して、WindowsならvbLf、それ以外ならvbNewLineにする。
ここのWindowsの改行の定数はvbCrLfではなくvbLfを使用する
Function lineBreak() As String
If Application.OperatingSystem Like "*Windows*" Then
lineBreak = vbLf
Else
lineBreak = vbNewLine
End If
End Function
Sub test2()
Dim val As String
val = Range("A1")
Range("B2") = Replace(val, lineBreak, "<br>")
End Sub
上記のコードであればセルから取得した改行入りの値をReplaceで置換してもWindowとMacのどちらでも正しく置換できるようになります。