[プログラミング?: 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種類全ての改行コードが使われていて、ちょっと何とも言えない感じです。改行コード・・・統一されないですかね、どれかに。
マニアックなネタでしたが、最後まで見ていただきありがとうございました。
もし宜しければ ”スキ” をしてくれると、僕のモチベーションアップにつながります。どうぞよろしくお願いします。
それじゃ、また ('ω')ノ