投稿者 魔界の仮面弁士  (社会人) 投稿日時 2013/12/5 11:59:06
> a = 0
> For i = 0 to 4
>   a = a & Str$(i) & vbCrLf

これだと、数字の前に空白が入り、さらに先頭に 0 が追加されますよ。

すなわち、
「0↵1↵2↵3↵4↵」や
「0↵1↵2↵3↵4」ではなく、
「0 0↵ 1↵ 2↵ 3↵ 4↵」にってしまう
…ということです。(↵は改行と思ってください)


> 書き出す内容としてはエクセルでCSVファイルを開いた際に、A列へ縦に0から4まで。
> その後、隣のB列へ5から9までを書き出したいと思っています。
こんな方法は如何でしょうか。


Const adInteger = 3     '整数型を表す定数 

Dim rs As Object
Set rs = CreateObject("ADODB.Recordset")

'最初に、列情報を定義する 
rs.Fields.Append "A列", adInteger
rs.Fields.Append "B列", adInteger

'処理開始 
rs.Open

'まずは A 列に値をセット 
For i = 0 To 4
    If rs.EOF Then
        rs.AddNew "A列", i
    Else
        rs.Collect("A列") = i
    End If
    rs.MoveNext
Next
If Not rs.BOF Then rs.MoveFirst     '先頭に戻す 


'B 列に値をセット 
For j = 5 To 9
    If rs.EOF Then
        rs.AddNew "B列", j
    Else
        rs.Collect("B列") = j
    End If
    rs.MoveNext
Next j
If Not rs.BOF Then rs.MoveFirst     '先頭に戻す 
    
    
'結果をCSVな文字列として取り出す 
csv = rs.GetString(RowDelimeter:=vbCrLf, ColumnDelimeter:=",", NullExpr:="")
    
'一応確認 
Debug.Print csv
MsgBox csv, vbInformation


'並び替えもできる。 
If Not rs.BOF Then rs.MoveFirst     '先頭に戻す 
rs.Sort = "B列 DESC, A列 ASC"   'B列の降順 
csv = rs.GetString(RowDelimeter:=vbCrLf, ColumnDelimeter:=",", NullExpr:="")
MsgBox csv, vbInformation, "ORDER BY B DESC, A"
rs.Sort = ""


'絞り込みもできる。 
If Not rs.BOF Then rs.MoveFirst     '先頭に戻す 
rs.Filter = "A列 >= 1 AND B列 <= 7"
csv = rs.GetString(RowDelimeter:=vbCrLf, ColumnDelimeter:=",", NullExpr:="")
MsgBox csv, vbInformation, "WHERE A>=1 AND B<=7"
rs.Filter = ""


rs.Close    '閉じる