• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel 2010 で勤務割表を作成しています。)

Excel 2010で勤務割表を作成する方法

このQ&Aのポイント
  • Excel 2010を使用して月間の勤務割表を作成する方法について解説します。日付を列に、個人名を行に設定し、勤務の割り振り状態を表示するものです。勤務種別により図形を貼り付けていますが、膨大な行数を要し、実行速度が低下することがあります。より単純な方法をご教示ください。
  • Excel 2010で勤務割表を作成する際、月間のスケジュールを日付を列に、個人名を行に設定し表示します。勤務種別により図形を表示していますが、実行速度が遅くなる場合があります。より効率的な方法を教えてください。
  • Excel 2010で勤務割表を作成する方法について教えてください。日付を列に、個人名を行に設定し、勤務の割り振り状態を表示するものです。勤務種別により図形を表示していますが、処理が遅くなることがあります。よりスムーズな方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.1

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

hnmorita
質問者

お礼

nag0720さま 早速ご回答を付けていただき有難うございました。 おかげで、For...Next の意味をハッキリと理解することができました。 実際は、ご提示のSub ShapeCopy(Zukei As String, i As Integer, j As Integer) 以下の 行は使わず、”Case”の中でPasteまでを行うように書換え使用させていただくことにしました。 以前のなごりでどうしても図形貼付で行いたくこのような形にしています。また、実は実行時間の遅速は たいしたことではなく、より単純化したコードを記述する欲求からきた質問でした。 重ねてお礼申し上げます。

関連するQ&A