| 
    
     |  | ▼UO3 さん: 
 どうもありがとうございます。
 
 offset、Resizeの使い方、
 変数からマイナスして繰り返す方法
 とても勉強になりました!
 
 すっきりとしていて
 私が悩んでいたコードって野暮ったいなと思ってしまいました。。。
 
 これを印刷したいのですが、
 1ページ目は1月、
 2ページ目は2月となっています。
 メッセージボックスから指定して印刷する方法はありますでしょうか。
 
 後からの続けての質問で申し訳ございません。
 
 もし分かりましたらよろしくお願い申し上げます。
 
 >▼ひまこ さん:
 >
 >
 >了解です。
 >
 >>初めの13段10列の表と同じものが
 >>12回目に最終的に出来上がります。
 >>コピーの1回目は元表からE3:J13を消した表
 >>コピーの2回目は元表からE4:J13を消した表
 >>以下続く、、という感じです。
 >>(最初の質問はこの形でした)
 >>
 >>
 >>もっと良い方法がある場合も含めて
 >>考え方をアドバイス頂けると助かります。
 >
 >この考え方がシンプルでよろしいかと思います。
 >以下、コード案です。
 >
 >Sub Sample()
 >  Dim i As Long
 >  Dim x As Long
 >  Dim n As Long
 >  Dim myR As Range
 >
 >  '処理中の画面の動きを隠す
 >  Application.ScreenUpdating = False
 >
 >  Set myR = Range("A1:J13") 'コピー領域
 >  '処理前に転記領域をクリア
 >  Range("A1", ActiveSheet.UsedRange).Offset(43).ClearContents
 >
 >  For x = 1 To 12 '処理回数
 >    i = x * 43 + 1 '転記行番号
 >    myR.Copy Cells(i, "A")   'コピペ
 >    n = x + 1        'J列までの値がコピーされるべき行数
 >    If 13 - n > 0 Then
 >      'D列までの値でいい領域につぃて、E〜J列の値をクリア
 >      Cells(i, "A").Offset(n, 4).Resize(13 - n, 6).ClearContents
 >    End If
 >  Next
 >
 >  Application.ScreenUpdating = True
 >  MsgBox "転記終了です"
 >
 >End Sub
 
 |  |