プログラミング_VBA_ヘッダー_s

[プログラミング?: ExcelVBA] Excelで使われる改行コードまとめ

 お疲れ様です (  'ω')ノ

 今回は、少しマニアックなネタで、Excelで使われる機能やオブジェクト毎の改行コードをまとめました。

 主に改行を意識しそうな場面オブジェクトで、入力した改行コードに対する表示結果とその中に含まれる改行コードの種類を調べました。

< 調べ方 >

・入力方法は、直接入力またはVBAからの入力とする。
・入力・存在を確認する改行コードは、3種類(CR:キャリッジリターン、LF:ラインフィード、CRLF:キャリッジリターン+ラインフィード)とする。
・改行コードの存在チェックは、ワークシート関数またはVBAで行う。
・オブジェクトへの入力は、CaptionやTextプロパティに行う。
・入力した値に含まれ改行コードの存在チェックは、
 (例) Debug.Print InStr(1, 対象オブジェクト.Caption, vbCr)
 (例) =FIND(CHAR(13), 対象セル)
 のように行う。

< 入力改行コードと表示結果、改行コードの存在チェック結果 >

入力: 入力した改行コード
 表示結果: 改行されているように見えるか 
 存在: 入力した値に含まれる改行コードは何か

セル内の改行
 ・入力: CR  → 表示結果: NG → 存在: CR
 ・入力: LF  → 表示結果: OK → 存在: LF
 ・入力: CRLF → 表示結果: OK → 存在: CRLF
※ [Alt]+[Enter] での改行は、LF
オートシェイプ(テキストボックス)
 ・入力: CR  → 表示結果: OK → 存在: LF
 ・入力: LF  → 表示結果: OK → 存在: LF
 ・入力: CRLF → 表示結果: OK → 存在: LF
フォームコントロール(ラベル)
 ・入力: CR  → 表示結果: OK → 存在: CR
 ・入力: LF  → 表示結果: OK → 存在: LF
 ・入力: CRLF → 表示結果: OK → 存在: CRLF
ActiveXコントロール(Label、TextBoxコントロール)
 ・入力: CR  → 表示結果: OK → 存在: CRLF
 ・入力: LF  → 表示結果: OK → 存在: CRLF
 ・入力: CRLF → 表示結果: OK → 存在: CRLF
MsgBox(VBA)
 ・入力: CR  → 表示結果: OK → 存在: -
 ・入力: LF  → 表示結果: OK → 存在: -
 ・入力: CRLF → 表示結果: OK → 存在: -
※ 表示されるメッセージから値を取得することができないため、改行コードの存在は確認できない
ユーザーフォーム(VBA Label、TextBoxコントロール)
 ・入力: CR  → 表示結果: OK → 存在: CRLF
 ・入力: LF  → 表示結果: OK → 存在: CRLF
 ・入力: CRLF → 表示結果: OK → 存在: CRLF
※ TextBoxコントロールは、MultiLineプロパティをTrueにしないと改行表示されない
Open ステートメント(によるテキストファイル出力 ※VBA)
 ・入力: CR  → 表示結果: OK → 存在: CR
 ・入力: LF  → 表示結果: OK → 存在: LF
 ・入力: CRLF → 表示結果: OK → 存在: CRLF
※ 使用するエディタや設定、OSによっては、プラットフォーム標準の改行コードじゃないと改行されているように見えないかもしれません。
※ なお、Win10のメモ帳だと、1行目が何で改行されたかを下のステータスバーに改行コードとして表示するようです。

 ・・・となりました。
 なお、改行コードの存在チェック結果については、CRLFが存在していれば、CRとLFも存在していることなります。
(理由は、CRLF が CRとLF を組み合わせた改行コードなので)


< まとめ >

 大体のオブジェクトやインターフェースが、3種類の改行コードどれを使っても改行として表示されますが、セル内の改行だけがCRでは改行表示されませんでした。ただ、CRの存在が確認できるのも少し不思議な感じがしました。

 あと、CRを入力して、存在チェックの結果がCRLFになっている場合は、恐らく内部でCRからCRLFに変換されているということでしょう。

 今回は凄くマニアックなネタでしたが、一つのアプリケーション、一つのOSの中でも3種類全ての改行コードが使われていて、ちょっと何とも言えない感じです。改行コード・・・統一されないですかね、どれかに。


 マニアックなネタでしたが、最後まで見ていただきありがとうございました。

 もし宜しければ ”スキ” をしてくれると、僕のモチベーションアップにつながります。どうぞよろしくお願いします。

 それじゃ、また ('ω')ノ


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