top of page

​タグ一覧

配列処理(76)

シート・セル操作(37)

ファイル操作(33)

階層化フォーム(33)

開発事例(31)

図形操作(29)

設計思想(15)

ユーザーフォーム(12)

シフト表(12)

講座実施報告(12)

数学(11)

イベントプロシージャ(10)

開発効率化(10)

コード自動生成(10)

GAS(10)

技術解説(9)

ココナラ(9)

文字列操作(8)

Webアプリ(8)

Googleスプレッドシート(6)

その他(5)

アニメーション(5)

副業(5)

介護・福祉(5)

OneDrive(4)

条件付き書式(4)

イミディエイトウィンドウ(4)

クリップボード(4)

小説(3)

日報(3)

JavaScript(3)

PDF(3)

HTML(3)

公開ツール(3)

クラスモジュール(2)

コード解説(2)

パズル(2)

小ネタ(2)

フリーランス(2)

Antigravity(2)

カレンダー(2)

Enum(2)

医療(2)

LookerStudio(2)

リスキリング(2)

Discord(2)

Outlook(2)

デスクトップアプリ(2)

スクレイピング(1)

WebAPI(1)

PowerShell(1)

文書作成(1)

スプレッドシート(1)

経理(1)

超勉強会(1)

溶接ロボット(1)

楽天市場(1)

VBA不使用(1)

実行予約(1)

CAD(1)

給与計算(1)

QRコード(1)

python(1)

学校(1)

発注書(1)

シフト希望の入力をボタンで速くする|時刻のボタンと出欠の自動入力(Excel VBA 実装例)

4 時間前
読了時間: 5分

まずは動画で、考え方と実際の画面をご覧ください(動画内のデータはサンプルです)。

シフトの希望、1マスずつ時刻を打ち込んでいませんか。

飲食店向けに納品したシフト作成ツール(Excel VBA)で使った工夫を紹介するシリーズの6本目、最終回です。今回は、スタッフの希望を入力する画面で、入力を速く・間違いなくするために入れた工夫を取り上げます。

 

この記事で紹介する工夫

  • 開始・終了のマスをダブルクリックすると、時刻のボタンが並んだ小さな画面がマスの横に出る

  • ボタンは、営業時間と最低の勤務時間から、選べる時刻だけを作って並べる

  • 時刻を入れると、出欠のマスに自動で「○」が付く

  • 何も入れていない日は、ボタン1つでまとめて「×」にできる

  • 開始と終了の片方だけが入っている間は赤く表示し、入れ忘れに気づける

 

課題:半月分の希望は千マスを超える

シフトの希望は、スタッフごと・日ごとに「出欠」「開始」「終了」の3マスで入力します。スタッフ全員の半月分となると、マスの数は千を超えます。

半月分の希望は千マスを超える

これだけのマスに時刻を1つずつ打ち込んでいくと、打ち間違いや、終了の入れ忘れも起きやすくなります。そこで、入力をキーボードではなくボタン中心にしました。

 

工夫1:ダブルクリックで時刻のボタンを出す

開始のマスをダブルクリックすると、時刻のボタンが並んだ小さな画面(ユーザーフォーム)が、マスの横に出ます。ダブルクリックの検知には、シートの BeforeDoubleClick イベントを使っています。

ダブルクリックで時刻のボタンを出す

ボタンは、あらかじめフォームに固定で置いておくのではなく、時刻の一覧から実行時に作って並べます。並べるのは、営業時間と最低の勤務時間から決まる「選べる時刻」だけです。

  • 開始のボタン:開店の時刻から「閉店の時刻 − 最低の勤務時間」まで、30分ごと

  • 終了のボタン:「開店の時刻 + 最低の勤務時間」から閉店の時刻まで、30分ごと

たとえば開店が 9:00、閉店が 22:00、最低の勤務時間が3時間なら、開始は 9:00〜19:00、終了は 12:00〜22:00 のボタンが並びます。選べない時刻はそもそもボタンにならないので、ありえない時刻を入れてしまうことがありません。

実際のツールでは、開始のマスをダブルクリックすると、次のように「出勤時刻入力」の画面がマスのすぐ横に開きます。

開始のマスをダブルクリックすると出勤時刻のボタンが並ぶ

 

工夫2:時刻を入れたら出欠は自動で「○」

開始や終了の時刻を入れると、同じ日の出欠のマスに自動で「○」が付きます。出欠を別に入力する手間がなくなり、「時刻は入っているのに出欠が空いている」という食い違いも起きません。

時刻を入れたら出欠は自動

この自動入力は、シートの Worksheet_Change イベントで行っています。ここで気をつけたいのは、イベントの中でマスに「○」を書き込むと、その書き込み自体がまた Worksheet_Change を呼び出してしまう点です。そこで、書き込む間だけ Application.EnableEvents を止めて、処理が二重に動かないようにしています。

また、出勤しない日は何も入れずにおき、最後に「空白を×に」ボタンを押すと、出欠が空いている日をまとめて「×」にできます。1日ずつ「×」を入れて回る必要はありません。

 

実際の画面:入れ忘れは赤ですぐ分かる

実際の画面では、開始だけを選んで終了がまだ空いている間は、そのマスが赤く表示されます。

入れ忘れは赤ですぐ分かる
  1. 開始のマスをダブルクリックし、時刻のボタンから選ぶ

  2. 終了が空いている間は、終了のマスが赤くなる

  3. 終了も選ぶと、色が戻る

下の画面は、開始に 9:00 を入れたあと、終了のマスが赤くなった状態で「退勤時刻入力」の画面を開いたところです。終了のボタンは 12:00 から始まっていて、開始の画面とは並ぶ時刻が変わっていることも分かります。

終了が空いている間は赤く表示され、退勤時刻のボタンから選べる

千マスを超える表の中でも、赤いマスを探せば入れ忘れがどこにあるかすぐに気づけます。

 

応用のヒント:選べる値だけをボタンで出す

選べる値だけをボタンで出す入力は、シフトの時刻に限らず、決まった選択肢の中から選ぶ入力に広く使えます。打ち間違いが起きにくく、ドロップダウンを開いて探すよりも速く選べるのが利点です。

選べる値だけをボタンで出す
  • 予約の時間:空いている時間帯だけをボタンにする

  • 作業の工程・品目:前の工程に合わせて、選べるものを絞る

  • 担当者・場所:その日に動ける人や部屋だけを並べる

 

動画で見る

この記事の内容は、YouTubeの動画でも紹介しています。

 

このシリーズの記事

飲食店向けのシフト作成ツールで使った工夫を、6本の記事で紹介してきました。この記事が最終回です。

 

まとめ

  • 千マスを超える希望の入力は、キーボードで打つよりボタンで選ぶほうが速く、打ち間違いも起きにくい

  • ボタンは実行時に作り、営業時間と最低の勤務時間から決まる「選べる時刻」だけを並べる

  • 時刻を入れたら出欠は自動で「○」、空白はボタン1つでまとめて「×」にする(Worksheet_Change では EnableEvents を止めて二重に動かさない)

  • 開始と終了の片方だけのときは赤く表示し、入れ忘れに気づけるようにする

入力する人が「迷わず、間違えずに選べる」ようにしておくと、そのあとの自動作成や集計もスムーズに進みます。決まった選択肢を入力する場面があれば、一つの考え方として、選べる値だけをボタンで出す形を試してみてください。

その作業、自動化できるかもしれません

毎月くり返している集計・転記・帳票づくりに何日もかかっていませんか。
Excelはそのままで、面倒な部分だけを自動化できます。ご相談は無料です。

softex-celwareロゴ 透過 横長.png

​インボイス登録番号:T5810983887134

  • Facebook
  • Twitter
  • YouTube

©2026 softex-celware。Wix.com で作成されました。

bottom of page