• ベストアンサー

Chr(13)とChr(10)の違いは?

myStr = Replace(myStr, Chr(13), "") や myStr = Replace(myStr, Chr(10), "") で、改行を置換しているのですが、どちらかでも改行できる時や どちらかじゃないと改行できない時があります。 そもそもChr(13)とChr(10)の違いはなんでしょう? どちらも改行ですよね? 何が違うのでしょう?

質問者が選んだベストアンサー

  • ベストアンサー
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.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, "") もしも文字列定数を先に覚えていたなら、疑問にもならなかったのかも知れませんね。 私の場合は、改行の何たるかを覚える前に文字列定数覚えていて、困ることありませんでしたから。 以上、ご参考まで。

ukhdknazxh
質問者

お礼

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

その他の回答 (2)

  • koi1234
  • ベストアンサー率53% (1866/3459)
回答No.2

回答はついてますがキャリッジリターン(CR)とラインフィード(LF)を表すものです Windowsだけを使っている場合それほど気にしてないことが多いかと思いますが 他のOSと相互間でファイルをやり取りする際などには思い切り影響府が出ることもあります 参考 http://www.sophia-it.com/content/LF

ukhdknazxh
質問者

お礼

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

  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.1

13は復帰、と言いまして、印字位置を1桁目に戻すことを指示しています。 10は改行、と言いまして、印字位置を1行送ることを指示しています。 10しか指示しないと、1行送られるものの、 1桁目に戻さず、その桁位置のまま次の文字を印字してしまいます。 13しか指示しないと、1桁目に戻すものの、改行しませんので重ねて印字されてしまいます。

ukhdknazxh
質問者

お礼

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

関連するQ&A

  • vba 改行 「・・」が置換できない

    シートの文字を取得して、削除したい文字を置換で消そうと思うのですが、 変数に格納した値にマウスカーソルを充てると、「・・」と表示され、置換できません。 ?mystr とすると、 改行が返ります。 mystr = Replace(mystr, Chr(10), "") mystr = Replace(mystr, Chr(13), "") mystr = Replace(mystr, vbCr, "") mystr = Replace(mystr, vbCrLf, "") mystr = Replace(mystr, Chr(10) & Chr(13), "") mystr = Replace(mystr, Chr(10) + Chr(13), "") で置換を試みましたが、全部だめです。 Debug.Print Asc(mystr) とすると、9が返ります。 この文字はどうやったら置換で消せるのでしょうか?

  • VBA Chr(10) Chr(13)

    アクセスのテーブルの値をvbaで操作してるのですが Chr(10) + Chr(13) と Chr(10) & Chr(13) は、同じ意味と認識していいのでしょうか? これを実行して置換等をした場合、改行される時とされない時があり不思議に感じています。 フォームに紐づいたレコードソースをテキストボックスに表示させていて、改行させて表示させたい場合があります。

  • MSXML2 実行時エラー14 Replace

    MSXML2でソースを抜き出して改行を置換しようとすると Set objIE = CreateObject("MSXML2.XMLHTTP") objIE.Open "GET", "http://" objIE.send myStr = objIE.responseText myStr = Replace(myStr, Chr(10), "") 実行時エラー14 文字列領域が不足しています。 と出る時があります。 これは変数に格納した文字が多すぎるのでしょうか? でも変数に格納できてるけど、置換ができないって事があるのでしょうか?

  • 実行時エラー 14 文字列領域が不足しています。

    一度変数に格納した値を置換しようとしたら、 実行時エラー 14 文字列領域が不足しています。 となりました。 変数は、String型で宣言しています。 myStr = rs("回答文") myStr = Replace(myStr, Chr(10), "") のように、一度myStrに格納した変数の格納を取ろうと思い、 Replaceで置換しようとすると、エラーが発生します。 myStr = rs("回答文") で myStrに格納できた時点で、容量は足りているはずだし、 Replace(myStr, Chr(10), "")で置換することによって、更に容量を減らしているのに なぜエラーになるのでしょうか? アクセスvbaです。

  • アクセス 改行 Chr(10)とChr(13)

    アクセスのフォームの、Enter キー入力時動作を「フィールドに行を追加」にして、 改行できる状態にした時、エンターキー改行したら、 入力される文字はChr(10)とChr(13)のどちらになるのでしょうか?

  • 文字列領域が不足しています

    vbaです。 原因は不明ですが myStr = Replace(myStr, Chr(10), "") の時に 「実行時エラー 14 文字列領域が不足しています。」 と言うエラーが発生するので 対処法として myStr = Replace(myStr, Chr(10), "", , , vbBinaryCompare) としているのですが、 tmp = Split(myStr, Chr(10)) でも同じように 「実行時エラー 14 文字列領域が不足しています。」 が発生するのですが 対処法は有りますか?

  • エクセルVBAのChr(10)の挿入と削除

    宜しくおねがいします 現在結合されたセルがありそのセル内に他のプログラムから 下記の値が挿入されるようになっています。 あいうえお かきくけこ さしすせそ たちつてと (Chr(10)の改行) (Chr(10)の改行) (Chr(10)の改行) (Chr(10)の改行) 他のプログラムから送られてくる値は”あ行”の1行だけだったり ”ま行”までの7行あったりとその都度変わってきます。 文字数も”あ”の1文字だけだったり”あああいいいうううえええおおお”と 文字数も変わります。 しかし下の4行分の”Chr(10)の改行”の数は変わりません。 やりたいことは↓ コマンドボタンを二つ作り、ボタンを押すたびに下にあるChr(10)の改行を 挿入したり削除したりしたいのですがどのようにすればよいのでしょうか? 追加ボタンを2回押すとChr(10)の改行が6行分になり そこから削除ボタンを3回押すとChr(10)の改行が3行分になる・・・という感じです。 試しにマクロの記録で セルを選択して改行を削除 をしてみたのですが思うような動きをしてくれません。 なぜChr(10)なのかとかいうのは聞かないでください・・・ そこから説明すると長くなるので。

  • Excel2000でのVBAでの改行の置換方法

    Excel2000でVBAを利用しています。 Dim buf As string buf = "あいうえお" buf = Replace(buf, Chr(10), Chr(13) & Chr(10)) Excel2007では上記のプログラムで「あいうえお」の間に入っている、 改行コード\nを\r\nに置換することができたのですが、 Excel2000では上記のコマンドで置換ができませんでした。 なんでも良いので、何か助言頂けると嬉しいです。 答えでもなくても良いのでなんでも思いついた事をお願い致します。

  • VB、chr関数を一覧で印刷できる?

    Chr(10)が改行だとかは、どこでどうやって探すの? 一覧表みたいに印刷できる?

  • 句読点の「。」を改行するには?

    テーブルに あああ。いいい。ううう。 の値がフィールドに入っているのですが、 あああ。 いいい。 ううう。 にしたいです。 データ型はメモ型です。 UPDATE テーブル1 SET [テーブル1].test = Replace([テーブル1]![test],"。",Chr(13)); このようなクエリを作ったのですが、 実行するとなぜか あああ いいい ううう になってしまいました。 エラーになると思ったのですが・・・ そもそもChr(13)はvbaのコードだから更新クエリでは無理ってことですかね? どうやったらテーブルのデータを改行できますか?

専門家に質問してみよう