|
>DO LOOPを使って"B列が空白になるまでBOOK1.xlsのA列に順番にコピーしなさい。"
>という感じの書式にしたいのですが、この場合はどのような書式になるのでしょうか?
DO 〜 LOOP だと行の指定に i をカウントさせる必要がありますので、
数値として、行をループ処理できるFor 〜 Next の方が、分かり易いですよ。
Dim i As Long
i=1
Do
If Cells(i,2).value = "" then Exit Do '空白ならループを抜ける。
'処理
i = i + 1
Loop
もしくは
Dim i As Long
i=1
Do until Cells(i,2).value = ""
'処理
i = i + 1
Loop
>現状はこれでリストのファイルは新しいBOOKになって開かれるのですが、
>このあと”開いたBOOKのB列をもともと開いているBOOKのA列に順序良くコピーする”
>という事を行ないたいのですが、どの様にすれば良いのでしょうか?
開かれたブックは、アクティブになっているので、
そのときに対象ブックを変数に格納しておくと、
後々の指定が簡単になります。
Dim newWb As WorkBook
Set newWb = ActiveWorkBook
'これで新しいブックのB列が指定できます。
newWb.Worksheets("Sheet1").Cells(i,2).Copy
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
書式などが要らない場合、セルの値のみコピーするのであれば、
.Value プロパティで受け渡しできます。
ThisWorkBook.Worksheets("Sheet1").Cells(i,2).Value = _
newWb.Worksheets("Sheet1").Cells(i,2).Value
また列の一定の範囲をコピーするのであれば、
Endプロパティを使えば、ループしなくても出来ます。
Dim LastRow As Long
with newWb.Worksheets("Sheet1")
LastRow = .Range("B65536").End(Xlup).Row '最終行の取得
.Range(.Cells(1,2) , .Cells(LastRow,2)).Copy
|
|