• ベストアンサー

エクセルで勤怠・作業管理

こんばんは、是非お力をお貸しくださいませ。 添付ファイルのように、エクセルでワークスケジュールを作成し、始業から終業まで条件付けで色付けまではできあがりました。 例えばマウスで N4からP4 までドラッグして、そこに B9:B12 の内容をドロップリストで複数のセルに一度に入力できないものでしょうか?(色含め) マクロを使用して、ということなのでしょうが、調べても答えに行きつくことはできませんでした。 大変恐縮ですが、ご教授頂けますと幸いです。 よろしくお願いします。

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

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.3

>マクロを使用して、ということなのでしょうが マクロでの対応を目指すのであれば、 ちょっとハードルが上がりますが、 コンテキストメニューを使う対応はいかがでしょうか。 つまり、添付画像のように 「食事」などをセットしたいセルを右クリックして 必要なメニューを選択するインターフェースです。 以下、仕込み方を説明します。 ◇その1 Thisworkbookモジュールに以下を配置 Private Sub Workbook_Open() AddMenu End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) DelMenu DelMenu End Sub ◇その2 標準モジュールに以下を配置 '//------------------------------------------------------------------------------------------------ '// コンテキストメニュー追加/削除 '//------------------------------------------------------------------------------------------------ Sub AddMenu() '//---------追加 Dim Newb Set Newb = Application.CommandBars("Cell").Controls.Add(Before:=1) With Newb .Caption = "Setレジ締" .OnAction = "Setレジ締" .BeginGroup = False End With Set Newb = Application.CommandBars("Cell").Controls.Add(Before:=1) With Newb .Caption = "Set掃除" .OnAction = "Set掃除" .BeginGroup = False End With Set Newb = Application.CommandBars("Cell").Controls.Add(Before:=1) With Newb .Caption = "set休憩" .OnAction = "set休憩" .BeginGroup = False End With Set Newb = Application.CommandBars("Cell").Controls.Add(Before:=1) With Newb .Caption = "Set食事" .OnAction = "Set食事" .BeginGroup = False End With End Sub Sub DelMenu() '//---------削除 On Error Resume Next Application.CommandBars("Cell").Controls("Setレジ締").Delete Application.CommandBars("Cell").Controls("Set掃除").Delete Application.CommandBars("Cell").Controls("Set休憩").Delete Application.CommandBars("Cell").Controls("Set食事").Delete End Sub Sub Set食事() Selection.Value = Cells(9, 2).Value Selection.Interior.Color = Cells(9, 2).Interior.Color End Sub Sub set休憩() Selection.Value = Cells(10, 2).Value Selection.Interior.Color = Cells(10, 2).Interior.Color End Sub Sub set掃除() Selection.Value = Cells(11, 2).Value Selection.Interior.Color = Cells(11, 2).Interior.Color End Sub Sub Setレジ締() Selection.Value = Cells(12, 2).Value Selection.Interior.Color = Cells(12, 2).Interior.Color End Sub ◇その3 いったんマクロブックを保存して開き 対象セルを右クリックしてメニューを選択します。

may-yonezu
質問者

お礼

HohoPapaさん、丁寧な説明ありがとうございます。 さっそく、教えて頂いた事を使って作成してみようと思います。 なんとか、イメージしていたものができそうです。 が、勉強が必要そうです。頑張ってみます 本当にありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • msMike
  • ベストアンサー率20% (371/1817)
回答No.2

添附圖參照(Excel 2019) コンナノで良ければ簡單に出來ますよ、[条件付き書式]でね。 お気に召すなら、且つ、御希望なら、作成手順を説明します。

may-yonezu
質問者

お礼

msMikeさん、ありがとうございます。 確かに「条件付き書式」でできそうですね。 複数のセルを指定し、一括で変更したいので 少し、工夫が必要そうでした。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • kon555
  • ベストアンサー率51% (1849/3570)
回答No.1

 ドロップリストでは、複数セルに対するアプローチも、色もコピーする事も多分出来なかったと思います。なので、やはりマクロで対応するのが手軽でしょうね。  ただその場合も、ドロップリストは使わない方が手軽です。作成は出来ますが複雑になるので。お望みの形にするだけならコピー・ペーストの自動化だけで充分だと思います。 Sub 食事() Range("B9").Copy Selection End Sub Sub 休憩() Range("B10").Copy Selection End Sub Sub 掃除() Range("B11").Copy Selection End Sub Sub レジ締め() Range("B12").Copy Selection End Sub  この4つのマクロは、それぞれ起動すると、選択しているセルにB9~11のセルをコピーします。あとは図形への登録でボタン的な物を作れば、ドロップリストより手軽に入力できます。  登録のやり方はこちらを参考にどうぞ。 https://officedic.com/excel-vba-autoshape-registration/  コピーペーストなので、今のままだと表の罫線が消えてしまうかもしれません。その場合はB9~11にも罫線を設定してやってください。  また他の業務が増えた場合はリストを追加して、マクロの『Range("〇〇〇").Copy』の〇〇〇の部分を書き換えれば使える形にしてあります。

may-yonezu
質問者

お礼

kon555さん、さっそくのお答え、ありがとうございます。 難しく考えすぎでした^^; 確かに、コピー・ペーストの自動化でなんとかできそうですね。 仕組みや、外部サイトのまで教えて頂き大変助かりました。 これからの勉強に役立てようと思います。 ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A