解決済み
Excel2010マクロで週ごとに当番を割り振りたいと以下のマクロを組みました。8行目まではうまくいったものの、21行目まではエラーも出ないけれども仕事もしないで画面上何も変化がありません。どうしたらよいのでしょうか。21行目ではブロックのコピーはできないというエラーが出ます。 シートは列がA日B曜C祝日欄D行事E~Jに6グループが入っています。 1 Sub 当番を割り振る() 2 Dim dx '曜日列の行1 3 Dim dy '曜日列の行2 4 Dim dz '曜日列の行3 5 Dim c '週フラグ 6 c = 0 7 For dx = 1 To 31 8 Range("O2:T2").Copy Range("E" & (dx + 6) & ":J" & (dx + 6)) '-----O2:T2割振りを貼り付ける 9 Next dx 10 For dy = 1 To 31 -----'2週目の月曜日以降だったら仕事の割振りをローテーションして次の月曜日までコピーする 11 If Weekday(Range("B" & (dy + 6)).Value) = 2 And c > 1 Then '-----月曜日で第2週以降だったら 12 Range("E" & (dy + 6)).Copy '-----1Gをクリップボードへ 13 Range("F" & (dy + 6) & ":J" & (dy + 6)).Copy Range("E" & (dy + 6) & ":I" & (dy + 6)) '-----2~6Gを1~5Gへ 14 ActiveSheet.Paste Destination:=Range("J" & (dy + 6)) '-----クリップボードを6Gへ 15 Range("E" & (dy + 6) & ":J" & (dy + 6)).Copy Range("E" & (dy + 7) & ":J" & (dy + 15)) '-----次週の月曜までコピー 16 c = c + 1 17 End If 18 Next dy 19 For dz = 1 To 38 '-----仕事のない土日、祝日の割振りを消す 欄外にコピーした分も消す 20 If Weekday(Range("B" & (dz + 6)).Value) = 0 Or Range("B" & (dz + 6)) = "" Then '-----土曜日だったら 21 Range("E" & (dz + 6) & ":J" & (dz + 7)).Clear '-----土日の割振りを消す 22 If Range("C" & (dz + 6)) <> "" Then Range("E" & (dz + 6) & ":J" & (dz + 6)).Clear '-----祝日だったら割り振りを消す 23 End If 24 Next dz 25 End Sub
96閲覧
< 自分のペースで、シフト自由に働ける >
パート・アルバイト(東京都)この条件の求人をもっと見る
求人の検索結果を見る
< いつもと違うしごとも見てみませんか? >
覆面調査に関する求人(東京都)この条件の求人をもっと見る