• ベストアンサー

先頭の改行だけ要らない

セルに適当な値が入っていて、そのセルの値を改行で区切ってつなぎ合わせて 一つの変数に納めてmsgboxで表示させる際、 一番最初の値の前にも改行が付いてしまうのですが、 これってどうやったら避けれますか? ---------- a b c ---------- こういう結果になってしまいます。 ---------- a b c ---------- こういう結果にしたいです。

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

  • ベストアンサー
  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.6

どうしてもFor~Nextの中に全て入れたいなら、Ifを追加する手も。 Sub test() Dim tmp As String Dim i As Long   For i = 1 To 3     If tmp <> "" Then       tmp = tmp & vbCrLf     End If     tmp = tmp & Cells(i, 1)   Next   Debug.Print tmp End Sub まぁつまり、変数tmpが空じゃなかったら改行を結合してから、次のセルの中身を結合する、 最初のセルを結合するタイミングでは変数tmpは空なのでIfを通らない、と言うことです。 あ、変数tmpをString型で宣言したのは単なる趣味です。 あまり気になさらないでください。

ltbdvhrtxiuw
質問者

お礼

ありがとうございます。

その他の回答 (5)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.5

MsgBoxでの表示を MsgBox Range("A1") & Chr(10) & Range("A2") & Chr(10) & Range("A3") のようにすることで表示画面の中央に並ぶようになっているので最初に改行があるのではないでしょう。 例えばA5セルまでの表示の場合でも上下の空白部分は同じで表示されますね。

ltbdvhrtxiuw
質問者

お礼

ありがとうございます。

回答No.4

1 行目だけ分ければ解決。 tmp = Cells(1, 1) For i = 2 To 3 tmp = tmp & vbCrLf & Cells(i, 1) Next i 勿論 3 行目だけ分けるのでもオッケー。 For i = 1 To 2 tmp = tmp & Cells(i, 1) & vbCrLf Next i tmp = tmp & Cells(3, 1)

ltbdvhrtxiuw
質問者

お礼

ありがとうございます。

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

素人考えから申しますと、 For i = 1 To 3 tmp = tmp & vbCrLf & Cells(i, 1) Next i=1の時にCrLfと"a"が出る i=2の時にCrLfと"b"が出る i=3の時にCrLfと"c"が出る ようですので、 tmp = tmp & Cells(i, 1) & vbCrLf 違うかなぁ

ltbdvhrtxiuw
質問者

お礼

ありがとうございます。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

sub macro1()  dim i, s  for i = 1 to 3   s = vblf & cells(i, "A")  next i  s = mid(s, 2, 999)  msgbox s end sub みたいな。

ltbdvhrtxiuw
質問者

お礼

ありがとうございます。

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

どのような関数でどのように表示していますか?

ltbdvhrtxiuw
質問者

お礼

ごめんなさい>< コード転記するの忘れてました。 これです↓ Sub test() Dim tmp As Variant Dim i As Long For i = 1 To 3 tmp = tmp & vbCrLf & Cells(i, 1) Next Debug.Print tmp End Sub 再度ご回答よろしくお願いします。

関連するQ&A