|
> Do
> d = Cells(n, 1)
↑
この書き方だと、現在アクティブになっているn行1列目のセルということになります。
> If d = "1" Then Exit Do
> t = r + 2
> m = m + 2
> Worksheets("sheet1").Select
↑
ここと
> Range(Cells(r, 3), Cells(t, 3)).Select
> Selection.Copy
> Worksheets("sheet2").Select
↑
ここでシートを選択し直していますが、
dの値は、Sheet2のn行1列目のセルという事になりますが、
その辺は、大丈夫なのでしょうか?
> Cells(s, 1).Select
> Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
> False, Transpose:=True
> r = r + 5
> s = s + 1
> n = n + 1
> Loop
いちいちシートやセルを選択しなくても、
どのブックの中のどのシートのどのセルなのかを明確に指定したやれば、
いちいち選択しなくても、値の書き込み、取得やセルのコピペができます。
Cells(n,m)
何もしていない場合、現在アクティブになっているシートのCells(n,m)を指します。
Sheets("Sheet3").Cells(n,m)
現在アクティブになっているブックの「Sheet3」のCells(n,m)を指します。
WorkBooks("Book5.xls").Sheets("Sheet4").Cells(n,m)
Book5.xlsブックの「Sheet4」のCells(n,m)を指します。
ThisWorkBook..Sheets("Sheet2").Cells(n,m)
このマクロが書いてあるブックの「Sheet2」のCells(n,m)を指します。
ブックやシートオブジェクトは変数にセットして使うこともできますが、
まずは基本を博して下さい。
過去ログ等にも色々ありますから、色々コードを見てみると良いと思います。
(実は手抜き、うまく説明できそうに無い。)
「F8」を押すことで1行づつコードの進行ができますから(ステップ実行)
これで、今どこで何をやっているのかを確認してみてください。
|
|