いつもお世話になってます。
エクセル2002で、2つのファイルを使ってVBAを組みたいと考えています。
下記のコードを『ファイルB』に記述しています。
A列のデータを、B列の回数分、C列に表示させています。
このC列に表示させている部分を『ファイルA』に直接書き出すには、
どのような記述が必要なのでしょうか?
単純に『ファイルB』のC列を、『ファイルA』に、コピー&ペーストする方法もあるかと思うのですが、
せっかくなので複数ファイルを対象に処理する記述にチャレンジしています。
が、なかなか思うような結果が得られません。
アドバイスをお願いいたします。
----------------------
Sub tes1()
Dim i As Integer
Dim k As Integer
Dim x As Integer
Dim y As Integer
With ActiveSheet.UsedRange
lastrow = .Cells(.Count).Row
End With
x = 2
For i = 2 To lastrow
k = Cells(i, 2)
For k = 1 To k
Cells(x, 3) = Cells(i, 1)
x = x + 1
Next k
Next i
End Sub
作業が複数のシート、複数のBOOKにまたがるなら、具体的に明示しなければなりません。
一例です。
マクロを記述したファイルBを、wb(0)
ファイルAをwb(1)
データがあるのがwb(0)のSheet1として、これをws(0)
書き出し先を、wb(1)のSheet1として、これをws(1) と、それぞれ定義しています。
Workbooks("ファイルA.xls")は開いているものとしますが、もし開いてないなら、開くコードを書かなければなりません。
Sub tes2()
Dim wb(1) As Workbook
Dim ws(1) As Worksheet
Dim i As Integer
Dim k As Integer
Dim x As Integer
Dim y As Integer
Set wb(0) = ThisWorkbook
Set wb(1) = Workbooks("ファイルA.xls")
Set ws(0) = wb(0).Sheets("Sheet1")
Set ws(1) = wb(1).Sheets("Sheet1")
With ws(0).UsedRange
lastrow = .Cells(.count).Row
End With
With ws(1)
x = 2
For i = 2 To lastrow
k = ws(0).Cells(i, 2)
For k = 1 To k
.Cells(x, 3) = ws(0).Cells(i, 1)
x = x + 1
Next k
Next i
End With
End Sub
お礼
回答ありがとうございます。 おかげさまで理想の結果を得られました。 勉強になりました。配列とSetの記述、自分で活用できるようにスキルアップしたいと思います。