
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を使用しても改行が挿入される。
1 2 3 | 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を使用する
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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のどちらでも正しく置換できるようになります。