VBAで文字列を改行する方法はいくつかあるが、ネットのサンプルなどで一番多いのはvbCrLfだろう。
Wikipediaによると、CrLfとはタイプライター時代の用語(キャリッジリターン・ラインフィード)の略らしい。
タイプライターはタイプするたびに印字装置が左から右に移動する。
紙の右端まできたら、印字装置を左端に戻す処理=キャリッジリターンと、次の行をタイプするために紙を少し上に送る処理=ラインフィードが必要になる。
これがつまり、タイプライターの改行処理で、デジタル化された現在でもWindowsはCRとLFの2文字とも改行コードに採用しているというわけだ。
ちなみに昔のMacではCRのみ、Unix・Linux・最近のMac OS XなどではLFのみを改行コードとして採用している。
したがって、VBAで使用するのはvbCrLfかvbLfの2種類ということになる。
さらに、環境によって自動で改行コードが選択されるvbNewLineというのもある。
私は主にvbNewLineを使用しているが、使い分けが必要になるシーンもある。
例えば、改行入りの文字列をセルに入れるようなマクロの場合だ。
ややこしいのは、WindowsでもExcelのセル内でAlt+Enterで改行した場合は、LFが入るということ。
VBAを使えばセル内改行としてCrLfを入れることも可能だが、手動の改行と混じると後で置換したいときなどにバグの元になる。
セル内に使用する文字列は、vbLfを使おう。
すでにLfとCrLfが混じっている可能性があるファイルに対しては、いったんCrLfを全てLfに置換してから処理するとうまくいく。
これ以外の改行方法として、サンプルによっては、Chr(13) & Chr(10)などと書いているものもある。
これは改行コードを文字コードとして指定しているだけのことで、実質vbCr + vbLfと変わらない。
次のコードを実行してみると分かる。
Debug.Print Asc(vbCr) Debug.Print Asc(vbLf)
まあ、ふつうはvbNewLineだけ覚えておけば事足りるのだが、まれにUnixサーバーのログをマクロで取り込んだりするときに改行コード回りの知識も必要になるので今回さらっと紹介してみた。
タイプライター風キーボード USB接続 Kailh社製「茶軸」 KFK51N
- 出版社/メーカー: KEIAN(恵安)
- メディア: エレクトロニクス
- この商品を含むブログを見る