- ベストアンサー
先頭の改行だけ要らない
- みんなの回答 (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型で宣言したのは単なる趣味です。 あまり気になさらないでください。
その他の回答 (5)
- KURUMITO
- ベストアンサー率42% (1835/4283)
MsgBoxでの表示を MsgBox Range("A1") & Chr(10) & Range("A2") & Chr(10) & Range("A3") のようにすることで表示画面の中央に並ぶようになっているので最初に改行があるのではないでしょう。 例えばA5セルまでの表示の場合でも上下の空白部分は同じで表示されますね。
お礼
ありがとうございます。
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
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)
お礼
ありがとうございます。
- maiko0318
- ベストアンサー率21% (1483/6969)
素人考えから申しますと、 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 違うかなぁ
お礼
ありがとうございます。
- keithin
- ベストアンサー率66% (5278/7941)
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 みたいな。
お礼
ありがとうございます。
- maiko0318
- ベストアンサー率21% (1483/6969)
どのような関数でどのように表示していますか?
お礼
ごめんなさい>< コード転記するの忘れてました。 これです↓ 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 再度ご回答よろしくお願いします。
お礼
ありがとうございます。