エクセル(VBA)でテキストファイル出力時
リターンコードはどうやって記述するのでしょうか?

chr(9)はタブ
chr(10)はラインフィード
chr(13)はキャリッジリターン

らしいんですがリターンコードはなんでしょうか?

宜しくお願いします

このQ&Aに関連する最新のQ&A

A 回答 (3件)

こんにちは。

maruru01です。
Enterキーの入力であれば、Chr(13)です。
ちなみに、Windowsでの改行は、VBやVBAでは
Chr(10) & Chr(13)で表します。
これはvbCrLfという定数が用意されており、例えば、
"1行目" & vbCrLf & "2行目"
のように記述します。もちろんこれは、
"1行目" & Chr(10) & Chr(13) & "2行目"
とまったく同じことです。
それから、VBAの画面でHELPで、"ascii"と入れて検索すると、文字コード表が見られますよ。
では。
    • good
    • 0
この回答へのお礼

ありがとうございます
助かりました

お礼日時:2001/12/10 17:05

書く必要は無いはずですが?


ファイルに書き出す時にwrite文かprint文なら特に指定の必要性は有りません。(勝手に付く)

なおリターンコードはVbCrLfで良いですよ。
使い方としては(Buffが文字列の変数とすれば)
Buff = "値" & VbCrLf
    • good
    • 0
この回答へのお礼

ありがとうございます
助かりました

お礼日時:2001/12/10 17:06

chr(9)→vbTab


chr(10)→vbLf
chr(13)→vbCr

テキストへの改行はvbCrLfだっけ?(記憶あいまい)
メッセージボックスならvbNewLineでも改行します。
    • good
    • 0
この回答へのお礼

早々の回答、ありがとうございます
助かりました

お礼日時:2001/12/10 17:08

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

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

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

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

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

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

Aベストアンサー

こんにちは。お邪魔します。

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, "")

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

以上、ご参考まで。

こんにちは。お邪魔します。

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

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

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

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

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

Qキャリッジ リターンコードが邪魔なんです

VBを使用してGP-IBインタフェースの測定器と通信しています。
測定値は,"LF""CR"が,付加された状態で読み出されてきますが,これをEXCEL等に入力するのに"LF""CR"が邪魔なんです。
制御コードを除くには,読み込みバッファの制御コード出現の位置を調べ
その位置-1までを測定値として取り出す他に手はないのでしょうか?

Aベストアンサー

Replaceとか
Splitとか

Qエクセル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)なのかとかいうのは聞かないでください・・・
そこから説明すると長くなるので。

宜しくおねがいします


現在結合されたセルがありそのセル内に他のプログラムから
下記の値が挿入されるようになっています。

あいうえお
かきくけこ
さしすせそ
たちつてと
(Chr(10)の改行)
(Chr(10)の改行)
(Chr(10)の改行)
(Chr(10)の改行)


他のプログラムから送られてくる値は”あ行”の1行だけだったり
”ま行”までの7行あったりとその都度変わってきます。
文字数も”あ”の1文字だけだったり”あああいいいうううえええおおお”と
文字数も変わります。

しかし下の4行分の”Chr(10)の改行”の数は変わ...続きを読む

Aベストアンサー

Sub CommandButton1_click()
 activecell.value = activecell.value & vbLf
End Sub

Sub CommandButton2_click()
 dim buf as string
 buf = activecell.value
 If right(buf, 1) = vbLf then
 activecell.value = left(buf, len(buf) - 1)
 end if
End Sub

単純に足したり削ったりするだけのようですが。

QVBでプリンター制御コードを記述する方法

VisualBasicでアプリケーションを作っているのですが、
印刷するタイミングで、プリンターに直接改行命令を送
りたいのですが、記述方法がわかりません。

プリンター:NEC MultiImpact700JX
使用目的 :専用伝票に印字する打ち出し位置を調整す
      るため

納期が迫っていて大変困っております。
どうか教えて下さい。

Aベストアンサー

For i = 1 To 10
Printer.Print vbCrLf
Next i
で10行下へ改行します。
右へはスペースを印字します。
Printer.Print " ";
また下記で用紙の左上よりのX座標、Y座標指定した位置にAAAを印字します。
Printer.CurrentX = 2600
Printer.CurrentY = 5000
Printer.ForeColor = 3
Printer.Font.Size = 20
Printer.Print "AAA"
これらのどちらかを使って印字位置を調節することは出来ませんか。
何かのご参考になりませんでしょうか。

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

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

Aベストアンサー

MSDNで ASCII文字セット を調べればわかりますよ。
ちなみに、8、9、10、13 は制御文字で、それぞれBackSpace、TAB、LF、CR ですね。

QVB.NETで起動したEXCELのシートに作成したCommandButtonのコードの記述について

 VB.NETからEXCELを起動し、シートにCommandButtonを作成しました。
 このCommandButtonのコードをどこに記述すればいい
のかわかりません。
 初歩的な質問で申し訳ありませんが、どなた様か、よろしくご教授下さい。

Aベストアンサー

Withブロックの後に
「CommandButton1 = CType(ExlSheet.CommandButton1,MSForms.CommandButton)」
を挿入してもだめでしょうか?

QChr関数のラインフィールド文字って?

EXCEL2000のVBAを勉強しているものです。
Chr関数のラインフィールド文字ってどんなことが
できるのでしょうか?調べると「復帰」とかかれているのですが・・
実際に使ってみても何がどう変わっているのかがわかりません。
chr(10)
とすると、どうなるのでしょうか?教えてください。
よろしくお願いいたします。

Aベストアンサー

こんにちは。maruru01です。

文字コード10のラインフィードは、Excelではセル内改行になります。
セルの書式設定の[配置]で、[折り返して全体を表示する]にチェックをしておいて、
そのセルに、

Range("A1").Value = "1行目" & Chr(10) & "2行目"

と書き込むと、セル内改行されます。
ちなみにVBの定数を使用して、

Range("A1").Value = "1行目" & vbLf & "2行目"

とも出来ます。

なお、通常のWindows改行は、Chr(13) & Chr(10)で、VBの定数は、「vbCrLf」ですが、これを使用して、

Range("A1").Value = "1行目" & vbCrLf & "2行目"

とすると、セルの表示は、

1行目・
2行目

という風に、Chr(13)が表示出来ずに、中黒になってしまいます。

Q文字列からタブコードを取り除きたい

お世話になります。
文字列からタブ文字をスペースに置き換えるにはどうすればよいでしょうか?
strREC = Replace(strREC, ○, " ")
と書いて、○のところに"\t"などをいれてみたのですが、うまくいきません。

Aベストアンサー

strREC = Replace(strREC, vbTab, " ")
または
strREC = Replace(strREC, chr(9), " ")
でどうでしょう

QChr関数であいうえお順に

Chr関数であいうえお順に文字をエクセルに書き出そうとしたけど、
単純にはいかないのですかね?

Sub test()
Dim MyRow As Long
Dim i As Long

For MyRow = 1 To 51
Cells(MyRow, 1) = Chr(-32096 + i)
i = i + 2
Next MyRow

End Sub
これを実行すると、濁点が入ったりするのですが、
綺麗に「あ~ん」まで取得する方法はありますか?

複雑なコードを作るしかないのですかね?

Aベストアンサー

Chr(-32096 + i)



Mid("あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん", i, 1)

あたりに変えればできませんかね?
文字列部分は別途変数に入れて分離しても可です。

QVB2005 コード記述作法

VBのコード記述作法に自身がなく不安です。

CADのラバーラインのような感じです。
PictureBoxを置いてFormの上下左右にアンカーしてるだけです。

lineモードにXorがないので下記のようにしました。
今は、とりあえず動いてますが、<?>印部分をここに記述しても安定動作しますか?
(メモリの無駄使いとか・CPUの負荷とか)

又Form1_Resizeで再描画してますが、Windowを最小化すると当然でしょうが
PictureBox1.Image = New Bitmap(PictureBox1.Width, PictureBox1.Height)
でエラーになります。
これを防ぐ方法を教えて下さい。


Public Class Form1
Private sx, sy, ex, ey As Integer
Private flg As Boolean = False
Private fg, bg As Graphics   '----<?>----
Private d(100, 4) As Integer
Private po As Integer = 1
'--------------------------------
Private Sub PictureBox1_MouseDown(~~
If flg = False Then
sx = e.X
sy = e.Y
ex = sx
ey = sy
flg = True
fg = PictureBox1.CreateGraphics() '----<?>----

Else
flg = False
ex = e.X
ey = e.Y
PictureBox1.Refresh()
fg.Dispose() '----<?>----

bg = Graphics.FromImage(PictureBox1.Image) '----<?>----
bg.DrawLine(Pens.Black, sx, sy, ex, ey)
bg.Dispose() '----<?>----

PictureBox1.Refresh()
d(po, 1) = sx
d(po, 2) = sy
d(po, 3) = ex
d(po, 4) = ey
po = po + 1

End If
End Sub
'--------------------------------
Private Sub PictureBox1_MouseMove(~~

If flg = True Then
PictureBox1.Refresh()

fg.DrawLine(Pens.Blue, sx, sy, e.X, e.Y)
ex = e.X
ey = e.Y
End If
End Sub
'--------------------------------
Private Sub Form1_Resize(~~

Dim x As Integer

PictureBox1.Image = New Bitmap(PictureBox1.Width, PictureBox1.Height)

bg = Graphics.FromImage(PictureBox1.Image) ' ----<?>----

For x = 1 To po - 1
bg.DrawLine(Pens.Black, d(x, 1), d(x, 2), d(x, 3), d(x, 4))
Next
bg.Dispose() ' ----<?>----
End Sub
'--------------------------------

End Class

VBのコード記述作法に自身がなく不安です。

CADのラバーラインのような感じです。
PictureBoxを置いてFormの上下左右にアンカーしてるだけです。

lineモードにXorがないので下記のようにしました。
今は、とりあえず動いてますが、<?>印部分をここに記述しても安定動作しますか?
(メモリの無駄使いとか・CPUの負荷とか)

又Form1_Resizeで再描画してますが、Windowを最小化すると当然でしょうが
PictureBox1.Image = New Bitmap(PictureBox1.Width, PictureBox1.Height)
でエラーになり...続きを読む

Aベストアンサー

gはペイントイベントの引数のプロパティを使っているのでDisposeする必要はありませんよ
コレは Framework側で管理してますのでユーザー側でDisposeしてしまうとおかしくなってしまいます
Disposeするのはユーザーが作成したオブジェクトと考えればほぼ間違えないでしょう

またオブジェクトが10000とかあるのでしたら描画のしなおしに対し自分自身が描画対象なのか判定する必要が出てくるでしょう
今は Invalidateで無条件に コントロール全体を無効にしています
描画しなおしたい範囲を指定することも可能ですので無効化を
Invalidate(New Rectangle( sx, sy, abs(ex-sx), abs( ey-sy )) )
といった具合にします

描画ルーチンで
 dim rc,rcPaint as Rectangle
 rcPaint = e.ClipRectangle
 For x=1 to po -1
  rc = new Rectangle( d(x,1), d(x,2), abs(d(x,3) - d(x,1)), abs(d(x,4) - d(x,2))
  ' 交差部分があるかチェック
  if rc.IntersectsWith( rcPaint ) then
   g.DrawLine( Pens.Black, d(x,1) ,d(x,2), d(x,3), d(x,4) )
  end if
 next

といった具合にしてみてはいかがでしょう ・・・

gはペイントイベントの引数のプロパティを使っているのでDisposeする必要はありませんよ
コレは Framework側で管理してますのでユーザー側でDisposeしてしまうとおかしくなってしまいます
Disposeするのはユーザーが作成したオブジェクトと考えればほぼ間違えないでしょう

またオブジェクトが10000とかあるのでしたら描画のしなおしに対し自分自身が描画対象なのか判定する必要が出てくるでしょう
今は Invalidateで無条件に コントロール全体を無効にしています
描画しなおしたい範囲を指定することも可能...続きを読む


人気Q&Aランキング