より単純なマクロにしたいのですが・・・
Dim Ws1 As Worksheet, Ws2 As Worksheet
Dim i As Long
Set Ws1 = Worksheets("名簿")
Set Ws2 = Worksheets("表面")
For i = Ws1.Range("B2").Value To Ws1.Range("B4").Value
Ws2.Range("HA2").Value = i
Ws2.Select
If Range("HD2").Value = 1 Then
Range("HG2").Select
ActiveCell.FormulaR1C1 = "1"
Range("HD2").Value = 2 Then
Range("HG2").Select
ActiveCell.FormulaR1C1 = "1"
Sheets(Array("表面", "裏面")).Select
ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
Range("HG2").Select
ActiveCell.FormulaR1C1 = "2"
ElseIf Range("HD2").Value = 3 Then
Range("HG2").Select
ActiveCell.FormulaR1C1 = "1"
Sheets(Array("表面", "裏面")).Select
ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
Range("HG2").Select
ActiveCell.FormulaR1C1 = "2"
Sheets(Array("表面, "裏面")).Select
ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
Range("HG2").Select
ActiveCell.FormulaR1C1 = "3"
End If
Sheets(Array("表面", "裏面")).Select
ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
Next
Sheets("名簿").Select
Range("F1").Select
Range("C5").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1").Select
End Sub
"表面"シートのHA2に任意の印刷No.が入っていき、"表面"シートのHD2にそれぞれ任意の印刷No.に応じて1~3の数字が振られているためその割り振り数字が入っていきます。HD2の数字が1の時は、HG2セルに1の数字が順に入り印刷(表面と裏面は印刷設定で両面になっています)し、HD2の数字が2の時は、HGセルに1の数字が入り印刷、次にHGセルに2の数字が入り印刷。HD2の数字が3の時は、HGセルに1の数字が入り印刷、次にHGセルに2の数字が入り印刷、次にHGセルに3の数字は入り印刷というマクロになっています。実際に動かしてみると
非常に重いため、よりスマートにできるようなコードを考えているのですがこれが私の限界です。どこでも良いので、簡潔にできる所があればアドバイスをいただけると幸いです。
お礼
早速の回答ありがとうございます。マクロ昨日始めたもので簡単なことも分からない状態です。 もうひとつお伺いしたいのですが、 4段目で確認未のボタンを押した際に最初に選択したセルから移動しないようにすることはできましたがそれぞれ確認未/確認済で操作した後、担当者の名前を記入したいのですが自分で担当者のセルに移動するのではなく列ごとに左の担当者のセルに自動で移動する方法はどうすればよいですか?