| 
    
     |  | 合ってましたか。良かった。 
 昨日は混乱すると思いあえて必要最小限の改造としましたが
 以下のようにシートを切り替えなくて済むようにできます。
 
 Sub サンプル2()
 Dim 貼付行 As Long
 Dim コピー行 As Long
 
 貼付行 = 1
 コピー行 = 2
 
 Sheets("Sheet2").Select
 
 Do Until Sheets("Sheet1").Cells(コピー行, "A").Value = ""
 'Cells()やRange()の前にシート名を書くと、書いたシート名の
 'セルと言うことになります。
 Sheets("Sheet1").Range("A1:D1").Copy
 'シート名が付いていないと現在表示しているシートのセルになります。
 Cells(貼付行, "A").Select
 Selection.PasteSpecial Paste:=xlPasteAll, _
 Operation:=xlNone, SkipBlanks:=False, _
 Transpose:=True
 
 Sheets("Sheet1").Cells(コピー行, "A").Resize(, 4).Copy 'Resizeで4列にする
 '上ではCells().Select→Selection.PasteSpecialと2段階で書いてますが
 '実は下のようにCells()..PasteSpecialと1つに纏められます。
 Cells(貼付行, "B").PasteSpecial Paste:=xlPasteAll, _
 Operation:=xlNone, SkipBlanks:=False, _
 Transpose:=True
 
 貼付行 = 貼付行 + 4
 コピー行 = コピー行 + 1
 Loop
 End Sub
 
 またシートの指定もサンプル3のようにWith〜End Withで纏めることが出来ます。
 
 Sub サンプル3()
 '書き方1
 Sheets("Sheet1").Range("A1:D1").Interior.ColorIndex = 3
 Sheets("Sheet1").Cells(1, 1).Interior.ColorIndex = 4
 '書き方2(書き方1と同じ意味になる)
 With Sheets("Sheet1")
 .Range("A1:D1").Interior.ColorIndex = 3
 .Cells(1, 1).Interior.ColorIndex = 4
 End With
 '−−−−−
 Sheets("Sheet2").Select
 With Sheets("Sheet1")
 .Range("A1:D1").Interior.ColorIndex = 3 'Sheet1のA1〜D1
 '↓これは.で始まっていないのでwithの影響を受けない
 '(=現在表示されているシートのCells(1,1)ということになる)
 Cells(1, 1).Interior.ColorIndex = 5
 .Cells(1, 1).Interior.ColorIndex = 4 'Sheet1のA1
 End With
 End Sub
 
 時間があるときにヘルプを読んだりしてみてくださいませ。
 
 |  |