**********************************************
開発チームから、「Excel に不正な改行コードを使用しているセルがある」と、
連絡がありました。
どうしてそのようなコードが混入したのかは不明でしたが、
その部分は手動で修正して再提出しました。
改行コードの種類
そこで、Excel の改行コードについてちょっと調べてみました。
改行に関係するコードは以下の5種類あるようです。
- Chr(10)
- Chr(13)
- vbCr
- vbLf
- vbCrLf
それぞれ、マクロに組み込んで実行してみるとこんな結果に。
マクロはこれ。
3文字目と4文字目の間に改行コードを挿入して実行。
**********************************************
Sub 改行コードtest()
Range("c2") = Left(Range("b2"), 3) & Chr(10) & Mid(Range("b2"), 4)
Range("c3") = Left(Range("b2"), 3) & Chr(13) & Mid(Range("b2"), 4)
Range("c4") = Left(Range("b2"), 3) & vbCr & Mid(Range("b2"), 4)
Range("c5") = Left(Range("b2"), 3) & vbLf & Mid(Range("b2"), 4)
Range("c6") = Left(Range("b2"), 3) & vbCrLf & Mid(Range("b2"), 4)
End Sub
**********************************************
「改行」という形になったものは、Chr(10), vbLf, vbCrLf の3種類。
Chr(13) と vbCr は変化なし・・・ なぜ???
そこで、以前作った、セルの中身を見ることができる(全部ではありませんが・・・)
マクロで覗いてみると・・・
ラベルには改行で表示されています。
テキストボックスにも改行を表す記号が表示されています。
だけど、シート上では改行されていないように見えます。
うーん・・・
コードは入力されたけど、2行にするコードではない ということだろうか・・・
Chr(13) と vbCr は同じ機能で、
Chr(10) と vbLf が同じ。
vbCrLf は両方の機能を持っている というところでしょうか。
違いは1行のままか2行で表示するか かな。
Cr ・・・Carriage Return
Lf ・・・Linefeed
意味や詳しい機能は調べてもよくわかりませんでしたが、
改行で表示したいときは、vbCrLf を使っておけば両方カバーできるってことで。
-----
-----
改行コードを削除するマクロ
私の作業の中で、改行を解除して1行にしたいことがあるので、
ワンクリックで改行コードを削除するマクロを 作りました。
**********************************************
Sub 改行コード削除()
Selection.Replace What:="" & Chr(10) & "", Replacement:=""
Selection.Replace What:="" & Chr(13) & "", Replacement:=""
Selection.Replace What:="" & vbCr & "", Replacement:=""
Selection.Replace What:="" & vbLf & "", Replacement:=""
Selection.Replace What:="" & vbCrLf & "", Replacement:=""
End Sub
**********************************************
5種類全部を削除してしまえば、どの改行コードでも対応できます。
でも、この並びの場合、上の2行で全部削除してしまうようです。
それと、このマクロは複数セルを選択して実行しても、
改行コードのあるすべてのセルに適用されます。
欧米の言語で、各行の末尾のスペースを削除して改行している場合は、
改行コードを削除した後に単語がくっついてしまうので、
Replacement:="" ではなく、
Replacement:=" " と、半角スペースに置換した方が良いです。
上のマクロのコードには引数がもっとありますが、
最低限必要な引数だけ記述しています。
この方が読みやすいので。
あとは、いつも通りこのマクロをリボンに登録して、
いつでも、どんなファイルにでも使えるようにしておきます。
|
**********************************************
個人用マクロブックについてはこちら
リボンに登録についてはこちら
_/_/_/_/_/_/_/_/_/_/