| 
    
     |  | > 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行づつコードの進行ができますから(ステップ実行)
 これで、今どこで何をやっているのかを確認してみてください。
 
 |  |