プロが教える店舗&オフィスのセキュリティ対策術

myStr = Replace(myStr, Chr(13), "")

myStr = Replace(myStr, Chr(10), "")

で、改行を置換しているのですが、どちらかでも改行できる時や
どちらかじゃないと改行できない時があります。

そもそもChr(13)とChr(10)の違いはなんでしょう?
どちらも改行ですよね?
何が違うのでしょう?

gooドクター

A 回答 (3件)

こんにちは。

お邪魔します。

Chr(10) ・・・ ラインフィード ・・・ 略して、Lf

Chr(13) ・・・ キャリッジリターン ・・・ 略して、Cr

改行文字に何を使うのかはアプリケーションが規定するものです。

Win・Office環境では
上のふたつを組合わせた改行[CrLf]を使うことが多いと思います。
次に[Lf]、そして、[Cr]

なので、ソースによっては
  myStr = Replace(myStr, vbCrLf, "")
と、一発で置換できるケースも少なくないです。
■ソースごとに改行文字を確認しておくことから始めた方が有利になります。■

ひとまず、VBAでの改行の扱いに慣れるには
■VBAで用意された文字列定数について知っておいた方がよいと思います。■
 VBE(Visual Basicの編集画面)が開いている状態で、
 F2 キー → オブジェクトブラウザー起動
 検索小窓に、vbCrLf、とタイプして、検索ボタン
 VBA.Constantsクラスのメンバーが表示され
 その中にすべての改行文字(文字列定数)が含まれています。
 そのまま、F1 キーでヘルプを表示します。
詳しい説明はヘルプを読む方がいいでしょう。

実践的な話として、
Chr(10)やChr(13)は関数の戻り値です。
対して、
vbLfやvbCr(またはvbCrLf)は定数です。
定数で済ませられるなら、定数の方が何かと有利です。
定数の名前は略号ですから、実態をイメージし易くなっています。
定数の扱いに慣れることをお奨めします。
例)
  myStr = Replace(myStr, vbLf, "")
  myStr = Replace(myStr, vbCr, "")
  myStr = Replace(myStr, vbCrLf, "")

もしも文字列定数を先に覚えていたなら、疑問にもならなかったのかも知れませんね。
私の場合は、改行の何たるかを覚える前に文字列定数覚えていて、困ることありませんでしたから。

以上、ご参考まで。
    • good
    • 5
この回答へのお礼

ありがとうございました。

お礼日時:2013/06/15 09:24

回答はついてますがキャリッジリターン(CR)とラインフィード(LF)を表すものです


Windowsだけを使っている場合それほど気にしてないことが多いかと思いますが
他のOSと相互間でファイルをやり取りする際などには思い切り影響府が出ることもあります

参考
http://www.sophia-it.com/content/LF
    • good
    • 4
この回答へのお礼

ありがとうございました。

お礼日時:2013/06/15 09:24

13は復帰、と言いまして、印字位置を1桁目に戻すことを指示しています。


10は改行、と言いまして、印字位置を1行送ることを指示しています。

10しか指示しないと、1行送られるものの、
1桁目に戻さず、その桁位置のまま次の文字を印字してしまいます。
13しか指示しないと、1桁目に戻すものの、改行しませんので重ねて印字されてしまいます。
    • good
    • 10
この回答へのお礼

ありがとうございました。

お礼日時:2013/06/15 09:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング