For文を使えばコードを短くすることはできますが、図形を496個貼付けているかぎり実行時間は変わりません。
なんのために図形を貼付けているのか分かりませんが、実行時間を短くしたかったら別の方法を考える必要があります。
とりあえず、コードを短くする方法だけ。
Sub Macro1()
For i = 6 To 51 Step 3
For j = 9 To 99 Step 3
Select Case Cells(i, j).Value 'i人目-j日
Case 1:
ShapeCopy "四角形1", i + 1, j + 1
Case 2:
ShapeCopy "四角形2", i + 1, j
Case 3:
ShapeCopy "四角形3", i + 1, j + 1
Case 4:
ShapeCopy "直線1", i, j
Case 9:
ShapeCopy "四角形3", i + 1, j + 1
End Select
Next
Next
End Sub
Sub ShapeCopy(Zukei As String, i As Integer, j As Integer)
ActiveSheet.Shapes(Zukei).Select
Selection.Copy
Cells(i, j).Select
ActiveSheet.Paste
End Sub
質問者
お礼
nag0720さま
早速ご回答を付けていただき有難うございました。
おかげで、For...Next の意味をハッキリと理解することができました。
実際は、ご提示のSub ShapeCopy(Zukei As String, i As Integer, j As Integer) 以下の
行は使わず、”Case”の中でPasteまでを行うように書換え使用させていただくことにしました。
以前のなごりでどうしても図形貼付で行いたくこのような形にしています。また、実は実行時間の遅速は
たいしたことではなく、より単純化したコードを記述する欲求からきた質問でした。
重ねてお礼申し上げます。
お礼
nag0720さま 早速ご回答を付けていただき有難うございました。 おかげで、For...Next の意味をハッキリと理解することができました。 実際は、ご提示のSub ShapeCopy(Zukei As String, i As Integer, j As Integer) 以下の 行は使わず、”Case”の中でPasteまでを行うように書換え使用させていただくことにしました。 以前のなごりでどうしても図形貼付で行いたくこのような形にしています。また、実は実行時間の遅速は たいしたことではなく、より単純化したコードを記述する欲求からきた質問でした。 重ねてお礼申し上げます。