チェック表をエクセルで作成する方法【クリックするだけでチェック処理できるマクロを設定】
こんな疑問にお答えします。
この記事では、VBAで便利なチェック表を作り方法を詳しくご紹介しています。
仕事では、工事監督業というものがあり、いろんな業務を並行して同時に進めなければなりません。ほとんどの業務が期限が決まっているので進捗管理がとても重要になります。
「この業務は明日までに終わらせなければいけないから優先させて、あの業務はいつまでに終わらせよう」と頭の中で考えていると、「業務のやり忘れ」が生じてしまいます。そんな「業務のやり忘れ」を防止するために作成したのが、VBAを設定した使いやすいチェック表です。
チェック表の様式設定、導入したVBAの解説・導入方法詳しくご紹介します。
目次
使いやすいチェック表とはどういうものか
今回作成した、業務の進捗管理をするチェック表はどのうようなものなのか説明していきます。
チェック表には以下の機能を設定しています。
- 「年」と「月」から日付と曜日が自動入力される
- セルをクリックするだけで「チェック」できる
- 期日の3日前になるとチェック項目の背景色を変えて目立たせる
VBAを使うことで上記の機能を自動化し、簡単に操作することができます。
「年」と「月」から日付と曜日が自動入力される
「年」と「月」を入力し「日付変更」ボタンを押すと、日付よ曜日が自動的に正しい値に修正されます。日付変更VBAには以下のような機能が設定されています。
- 閏年の2月は29日まで表示し、それ以外は28日まで表示させる
- 土曜のテキストを青に変更する
- 日曜のテキストを赤に変更する
チェック表に限らず日付と曜日の記入が必要なエクセルファイルで利用頻度の高いVBAなので自由に扱えるようにしておきましょう。
セルをクリックするだけで「チェック」できる
セルをクリックするだけで以下の処理を行うことができます。
- 予定の背景色を「白」→「緑」に変更
- チェック欄の「空欄」→「〇」に変更
- チェック欄に〇を表示させると自動で予定の背景色が変更「緑」→「灰色」
クリックするだけで予定の背景色やチェック欄を入力することができるので、予定の入力やチェック操作がとても簡単です。チェック欄に「〇」が記入されると、予定の背景色が自動的に灰色に変更されるので、完了した業務なのか、まだ残っている業務なのか一目で確認することができます。
期日の3日前になるとチェック項目の背景色を変えて目立たせる
「期日チェック」ボタンを押すと以下の処理を行うことができます。
- 立てた予定の期日が3日前になるとチェック項目の背景色が「ピンク」になる
- チェック欄に「〇」を記入するとチェック項目の背景色は「ピンク」→「白」になる
- 予定の期日が過ぎていたり、4日以降だとチェック項目の背景色は「白」のままになる
チェック表導入の最大の問題点は、「操作がめんどうになり、チェック表を使わなくなる」ことです。チェック表の本来の目的は「業務のやり忘れ防止」を実現することであって、チェック表の操作ではありません。
チェック表は、「いかに手間がかからず使いやすいか」が重要です。VBAを導入することでチェック表操作の手間を激減させることが可能です。
チェック表の作り方【様式設定】
チェック表の様式は上図のように設定していください。
- 3列目・・・チェック項目欄
- 35列目・・・チェック欄
- 35列1列目・・・「年数」と「月数」
- 3行目・・・日付
- 4行目・・・曜日
表の枠を増やしたい、チェック欄の位置を移動させたいという場合、VBAの改修が必要になります。下記にコピペして使えるサンプルVBAを掲載しているので、チェック表をアレンジさせたいという方は是非活用してみてください。
チェック表の作り方【VBAの設定】
チェック表には以下の処理をするVBAを設定しています。
- 日付、曜日を自動で編集するVBA
- セルをクリックすると背景色を変更するVBA
- 条件からセルの背景色を変更するVBA
上記のVBAを設定することで、チェック操作はクリックだけとなり業務の進捗管理に専念することができるようになります。
日付、曜日を自動で編集するVBAの導入方法
1.VBAを起動
2.標準モジュールを作成し、VBAを記載
3.日付、曜日を自動で編集するサンプルVBA
1 | Sub 日付() |
2 | For i = 1 To 31 |
3 | Cells(3, i + 3) = i |
4 | Next |
5 | If Month(Cells(1, 35)) = “2" Then |
6 | GoTo L1 |
7 | ElseIf Month(Cells(1, 35)) = “1" Or Month(Cells(1, 35)) = “3" Or Month(Cells(1, 35)) = “5" Or Month(Cells(1, 35)) = “7" Or Month(Cells(1, 35)) = “8" Or Month(Cells(1, 35)) = “10" Or Month(Cells(1, 35)) = “12" Then |
8 | For i = 4 To 34 |
9 | Cells(4, i) = WeekdayName(Weekday(Year(Cells(1, 35)) & “/" & Month(Cells(1, 35)) & “/" & Cells(3, i)), True) |
10 | Next |
11 | Else |
12 | For i = 4 To 33 |
13 | Cells(4, i) = WeekdayName(Weekday(Year(Cells(1, 35)) & “/" & Month(Cells(1, 35)) & “/" & Cells(3, i)), True) |
14 | Next |
15 | Cells(3, 34).ClearContents |
16 | Cells(4, 34).ClearContents |
17 | End If |
18 | L1: |
19 | If Month(Cells(1, 35)) = “2" And (Day(DateSerial(Year(Cells(1, 35)), 2, 28) + 1)) = 29 Then |
20 | Range(Cells(3, 33), Cells(4, 34)).ClearContents |
21 | For i = 4 To 32 |
22 | Cells(4, i) = WeekdayName(Weekday(Year(Cells(1, 35)) & “/" & Month(Cells(1, 35)) & “/" & Cells(3, i)), True) |
23 | Next |
24 | ElseIf Month(Cells(1, 35)) = “2" And (Day(DateSerial(Year(Cells(1, 35)), 2, 28) + 1)) <> 29 Then |
25 | Range(Cells(3, 32), Cells(4, 34)).ClearContents |
26 | For i = 4 To 31 |
27 | Cells(4, i) = WeekdayName(Weekday(Year(Cells(1, 35)) & “/" & Month(Cells(1, 35)) & “/" & Cells(3, i)), True) |
28 | Next |
29 | Else |
30 | End If |
31 | For i = 4 To 34 |
32 | If Cells(4, i) = “土" Then |
33 | Cells(4, i).Font.Color = RGB(0, 176, 250) |
34 | ElseIf Cells(4, i) = “日" Then |
35 | Cells(4, i).Font.Color = RGB(255, 0, 0) |
36 | Else |
37 | Cells(4, i).Font.Color = RGB(0, 0, 0) |
38 | End If |
39 | Next |
40 | Range(Cells(3, 4), Cells(4, 34)).HorizontalAlignment = xlCenter |
41 | End Sub |
4.ボタンを作成
5.ボタンにVBAを登録
6.VBAを実行
セルをクリックすると背景色を変更するVBAの導入方法
1.VBAを起動
2.SheetにVBAを記載
3.セルをクリックすると背景色を変更するサンプルVBA
1 | Private Sub Worksheet_SelectionChange(ByVal Target As Range) |
2 | On Error Resume Next |
3 | For i = 5 To 20 |
4 | For j = 4 To 34 |
5 | If (Target.Cells.Interior.Color = RGB(255, 255, 255)) And (Target.Row = i) And (Target.Column = j) Then |
6 | Target.Cells.Interior.Color = RGB(0, 255, 0) |
7 | ElseIf (Target.Cells.Interior.Color <> RGB(255, 255, 255)) And (Target.Row = i) And (Target.Column = j) Then |
8 | Target.Cells.Interior.Color = RGB(255, 255, 255) |
9 | End If |
10 | Next |
11 | Next |
12 | If (Target.Column = 35) And (Target.Value = “") Then |
13 | Target.Value = “〇" |
14 | Else |
15 | End If |
16 | For i = 5 To 20 |
17 | For j = 4 To 34 |
18 | If (Cells(i, 35) = “〇") And (Range(Cells(i, j), Cells(i, j)).Interior.Color <> RGB(255, 255, 255)) Then |
19 | Range(Cells(i, j), Cells(i, j)).Interior.Color = RGB(217, 217, 217) |
20 | Range(Cells(i, 3), Cells(i, 3)).Interior.Color = RGB(255, 255, 255) |
21 | Else |
22 | End If |
23 | Next j |
24 | Next i |
25 | For i = 1 To 20 |
26 | For j = 4 To 34 |
27 | If Cells(i, j) = “〇" Then |
28 | Cells(i, j).ClearContents |
29 | Else |
30 | End If |
31 | Next |
32 | Next |
33 | If Err <> 0 Then |
34 | Err.Clear |
35 | End If |
36 | End Sub |
4.VBAを実行
- 条件からセルの背景色を変更するVBA
条件からセルの背景色を変更するサンプルVBA
今回は、「予定期日が3日前になるとチェック項目の背景色が変わる」という条件にしています。
1.VBAの起動
2.標準モジュールを作成し、VBAを記載
3.条件からセルの背景色を変更するサンプルVBA
1 | Sub 期日() |
2 | Dim d As Long |
3 | Dim d2 As Long |
4 | d = Format(Date, “yyyymdd") |
5 | For i = 5 To 20 |
6 | For j = 34 To 4 Step -1 |
7 | If Range(Cells(i, j), Cells(i, j)).Interior.Color = RGB(0, 255, 0) Then |
8 | d2 = Year(Cells(1, 35)) & Month(Cells(1, 35)) & Day(Cells(3, j)) |
9 | If (d2 – d) < 3 And (d2 – d) >= -1 Then |
10 | Range(Cells(i, 3), Cells(i, 3)).Interior.Color = RGB(255, 200, 255) |
11 | Else |
12 | GoTo L2 |
13 | End If |
14 | Else |
15 | End If |
16 | Next |
17 | L2: |
18 | Next |
19 | End Sub |
4.ボタンを作成
5.ボタンにVBAを登録
6.VBAを実行
使いやすいチェック表の導入で「業務のやり忘れ」が激減
今回紹介したVBAを設定したチェック表を導入してから、業務のやり忘れを激減させることができました。
チェック表の特徴は以下のようになります。
- クリック一つでチェック操作ができる
- 扱いやすく進捗状況が見やすい様式
- 期日を知らせるチェック機能が便利
VBAが設定されていないチェック表はチェック操作が手間だから使わなくなってしまう!という特徴がありますが、VBAを使うことでこのデメリットを解消することができました。
仕事では1人で10件以上のプロジェクトを並行して進めなければいけません。そうすると、あのプロジェクトの打合せって終わった?あの資料を作成しなきゃ!など頭の中を整理しきれなくなります。
進捗状況を簡単に確認できるチェック表があれば的確に業務の優先順位を決めることができるので、「業務のやり忘れ」がなくなります。また上司や同僚に自分の状態を知らせることもできるので仕事の効率をアップさせることができます。
進捗管理が複雑になればなるほどVBAを導入した方が扱いやすくなります。進捗管理がうまくいかない方はこの記事で紹介したチェック表を有効活用してみてください。
ディスカッション
コメント一覧
まだ、コメントがありません