Excelのマクロは、データの自動処理や転写を効率化するために作られています。本記事では、社員の勤務割り振りを編集前から編集後のデータへ転写するマクロの動作を、初心者にもわかるように解説します。
編集後へ転写マクロの基本構造
マクロはまずSheets(“編集後”)をアクティブにし、範囲H12:AL45の内容をクリアします。
例: Sheets(“編集後”).Range(“H12:AL45”).ClearContents → H12からAL45の範囲を空にする
次にフォントサイズを20に設定します。Forループで日付や列を順に処理して、編集前のデータを条件に従って転写します。
Forループの意味
For 日 = 8 To 40 → 8から40列まで順に処理
For 編集前日 = 7 To 22 → 編集前シートの7列から22列までを順にチェック
If Sheets(“編集後”).Cells(7, 日) = Sheets(“編集前”).Cells(2, 編集前日) Then → 7行目の日付と編集前の2行目の日付が一致する場合に処理
行ごとのデータ転写
For 行 = 11 To 48 Step 2 → 11行目から48行目まで2行おきに処理
Sheets(“編集後”).Cells(行, 日) = Sheets(“編集前”).Cells(行 – 5, 編集前日) → 編集前のデータを編集後にコピー
オートシェイプ貼り付けマクロの処理
If Sheets(“編集後”).Cells(行, 日) = “責” → セルの値が”責”なら楕円シェイプをコピーして貼り付け
If Sheets(“編集後”).Cells(7, 日 + 1) <> “” Then → 次の日列に値があれば△や別シェイプを貼り付け
マクロの修正ポイント
マクロを修正する際は、Forループの範囲やセル参照が表構造に合っているか確認します。
例: If Sheets(“編集後”).Cells(7, 日) = Sheets(“編集前”).Cells(2, 編集前日) Then → 日付の行番号が変わった場合は修正が必要
オートシェイプ名も表が変わると異なる場合があるので、ActiveSheet.Shapes(“楕円 4186”).Copy などの箇所も確認します。
まとめ
このマクロは、編集前データから編集後シートへの自動転写と条件付きオートシェイプ貼り付けを行います。Forループで列と行を順に処理し、条件に応じてデータとシェイプを貼り付ける仕組みです。
修正する際は、参照セルの範囲やオートシェイプ名を表の変更に合わせて更新することで、再び正しく動作させることが可能です。


コメント