• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マクロ設定について質問です)

エクセルでマクロ設定について質問

このQ&Aのポイント
  • エクセルでシフト作成中に、氏名とシフト時間の関連を自動で設定する方法について教えてください。
  • また、日付の変更に合わせてシフトの書式を自動で設定する方法も教えてください。
  • 要望としては、特定のシフト時間に合わせてセルの色を変える機能もほしいです。

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

  • ベストアンサー
  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.2

マクロの一例です Sub Macro4() Set kiten = Sheets(1).Range("A1") hiduke = Day(Sheets(2).Range("A1").Value) Sheets(2).Select Range("A2").Select While Selection.Value <> "" Rows(Selection.Row).Interior.ColorIndex = xlNone Select Case kiten.Offset(Selection.Row - 1, hiduke) Case Is = "a" With Range(Selection.Offset(0, 1), Selection.Offset(0, 5)).Interior .Color = vbRed End With Case Is = "b" With Range(Selection.Offset(0, 3), Selection.Offset(0, 8)).Interior .Color = vbRed End With Case Is = "c" With Range(Selection.Offset(0, 5), Selection.Offset(0, 10)).Interior .Color = vbRed End With Case Is = "d" With Range(Selection.Offset(0, 7), Selection.Offset(0, 12)).Interior .Color = vbRed End With End Select Selection.Offset(1, 0).Select Wend End Sub Sheet2のA1セルにシフトを表示したい日付を入れて実行すると塗りつぶします 各ケースの With Range(Selection.Offset(0, 1), Selection.Offset(0, 5)).Interior Offsetで指定した範囲を塗りつぶします上記の場合2列目から6列目までを塗りつぶします タイムシフトにあわせて範囲を指定してください このマクロはあくまで一例、変更する要素は多数有りますので後はご自信で工夫を

Yangoro
質問者

お礼

ありがとうございます。うまく動作しました。 またわからないことがあれば、質問いたします。

その他の回答 (2)

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.3

追記: 先のマクロのSheet2!A1セルに入力する日付はX月X日と入力する必要が有ります3/6とか4-15などと入力してください 単純に1とか5と入力する場合は3行目の hiduke = Day(Sheets(2).Range("A1").Value) の部分を hiduke = Sheets(2).Range("A1").Value と変更してください 変更すると日付形式の入力では逆に正常動作しませんので、入力形式をどちらかに固定する必要が有ります

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.1

セルの塗りつぶしのみであれば、条件付書式で可能ですね Sheet1のA1セルに[kiten]、Sheet2の日付を入力したセルに[hiniti]と名前付け Sheet2へ条件付書式 OFFSET(kiten,ROW()-1,DAY(hiniti))="a" を設定すると塗りつぶしがされます シフトによって時間帯が変化するの場合、そのセルが塗りつぶされる時間帯のシフトの計算式をor関数で連記する 例:aのシフトがB列からD列まで、bのシフトがC列からF列まで、cのシフトがF列からI列までの場合 条件付書式計算式 B2セル:OFFSET(kiten,ROW()-1,DAY(hiniti))="a" C2セル~D2セル:OR(OFFSET(kiten,ROW()-1,DAY(hiniti))="a",OFFSET(kiten,ROW()-1,DAY(hiniti))="b") E2セル:OFFSET(kiten,ROW()-1,DAY(hiniti))="b" F2セル:OR(OFFSET(kiten,ROW()-1,DAY(hiniti))="b",OFFSET(kiten,ROW()-1,DAY(hiniti))="c") G2セル~I2セル:OFFSET(kiten,ROW()-1,DAY(hiniti))="c" と設定し、B2:I2を選択して下方向に書式をコピーで

Yangoro
質問者

補足

Web2525さんありがとうございます。 正直、言いますと上記書式設定ではうまく動作しません。やり方が悪いのか、作動しません。 できれば、マクロで設定することは可能でしょうか。 よろしくお願いいたします。

関連するQ&A