🆖`Chr(13) & Chr(10)` と書いてはならない

この記事は現在、全文を無料で読むことができます。


`Chr(13) & Chr(10)` と書くのはよくありません。


正しい方法

CRLF固定

VB6, VBA, VB.NET 共通で、本当に CR LF (C言語系の "\r\n") が欲しい場合は、CRLF を表す String 型の `vbCrLf` を使います。どのプラットフォームでも固定で CRLF が適用されます。

Dim str As String
str = "Hello" & vbCrLf & "World"

現在のプラットフォーム固有の改行コード

プラットフォーム固有の改行文字が必要な時は、VB6/VBA の場合 `vbNewLine` を使います。

Dim str As String
str = "Hello" & vbNewLine & "World"

VB.NET の場合、`System.Environment.NewLine` を使います。

Dim str As String
str = "Hello" & Environment.NewLine & "World"

使うべきでない理由

`Chr(13) & Chr(10)` は間違いやすく、意図が伝わらない可能性があり、冗長であるからです。

間違いやすい

`Chr(13) & Chr(10)` の 13 や 10 という定数をいつも正確に覚えているでしょうか?プログラムを実行して数字があっているか確認していませんか?間違いに自分で気が付くこともよくあることでしょう。無駄な時間です。

書き間違いのリスクは大きく、私は `Chr(10) & Chr(13)` とCRとLFを反対に書いてあるコードを実際に見たことがあります。なんとなく動作していましたがとんでもない話です。`Chr` で改行コードを表そうとするからそんな間違いをしてしまいます。

意図が伝わらない可能性がある

読み手がASCIIコードを暗記していることを期待してはならないです。謎の 13 と 10 で読み手を無駄に混乱させる必要はありません。

冗長である

単純に `Chr(13) & Chr(10)` という書き方は文字数が多くて長いですよね。書き手も読み手もつらいです。よりシンプルで、読みやすいコードを書くべきです。

キーコードと文字は異なるもの

'vbKeyReturn' は?

'vbKeyReturn' は文字ではなく、キーボードの「キー入力」を表す整数値の定数です。キーコードと呼ばれることがあります。文字や文字列ではないので、文字列の操作で使うのは常に間違っています。

'vbKeyReturn' の間違った例

文字列を改行させようとして使うのは常に間違いです。`Chr` が受け取るのは文字コードであり、キーコードではありません。

' 間違い
Dim str As String
str = "Hello" & vbKeyReturn & "World"
str = "Hello" & Chr(vbKeyReturn) & "World"

'vbKeyReturn' の正しい例

改行を表す文字や文字列とは無関係で、キーコードとの比較に使うのが正しい使い方です。

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyReturn Then
        MsgBox "Enterキーが押されました"
    End If
End Sub

`vbCrLf` を使おう!

固定で CRLF が必要な時は `vbCrLf` を使おう!環境に合わせた改行コードが必要な時は `vbNewLine` または `Environment.NewLine` を使おう!

`Chr(13) & Chr(10)` と書くのは、間違えやすいし、意図が伝わらないかもしれないし、冗長だからやめよう!

CRとLFを反対にして `Chr(10) & Chr(13)` なんて決して書かないようにしよう!

ここから先は

0字

¥ 500

この記事が気に入ったらサポートをしてみませんか?