仕事に活かせる!実例を交えたVBAの実践方法

スポンサーリンク



今回の記事は、これからVBAをやり始めた初心者さん向けを
対象しています。
これを読むことで、実際のプログラム作成の流れが理解できます。

記事の巻末に、簡単な勤務表をエクセルVBAを添付しました。
改変自由ですので、好きに使ってみてください。

それでは、早速いってみましょう。
昨日の記事で、エクセルVBAを使うと、
こんな便利なことがありますよ!という記事を書きました。

事務作業をする人にこそ、VBAをオススメしたい具体的な事例を紹介

2017.01.21

簡単な勤務表のVBAプログラムです。

私が実際に、このような手順で作成していきました。

①作業の流れを紙に書く
②機械に任せることを決める
③実際にコーディングする
④不具合がないか確かめる
⑤完成!

これを読むと、実際のプログラム作成の流れがわかるようになります。

①作業の流れを紙に書く

一番の肝です。

あなたが毎月入力している勤務表の作成の時間がかかり、
月に一度憂鬱な日々が来るとします。
この作業をやりたくない!もっと楽して、他の仕事やりたいのに!
こんなとき、なんとか効率化できないか考えるとします。

よほど権限のある方ならば、部下に作らせておくこともできるでしょう。
けれども、まだ新人さんだったり、そんな権限を持たない方は
とてもお願いするのに気が引けます。
そんな時こそ、VBAの出番です。

まずは自分がやっている作業を紙に書きだします。
その中から、機械に任せてもよいものを選びます。
そして、それをプログラムするのです。

パソコンの得意なことは、計算です。
この機能を大いに活用させてもらう処理を考えてみましょう。

ちなみに、勤務表を作成する流れを書いてみます。

1:入力したい月を入れる
2:日付を打ちかえる
3:曜日を変更
4:セルの色を休日に合わせて塗り直し
5:勤務時間・残業時間を入力しなおす

ざっくりとこのような流れになりますね。

②機械に任せることを決める

さきほどの挙げた作業の流れの中で、
機械(パソコン)に任せてもよさそうなことを決めます。

パソコンの得意なことは、おもに計算処理です。
同じ作業を繰り返し行うということは、機械がはるかに人間を上回ります。
ですので、この場合でいう、

2:日付を打ちかえる
3:曜日を変更
4:セルの色を休日に合わせて塗り直し
5:勤務時間・残業時間を入力しなおす

の作業はパソコン処理できそうだと判断がつきます。

ですので、この2~4をプログラムしていきましょう。

③実際にコーディングする

実際にプログラムを組むということは、
さきほどの2~4の流れをプログラミング言語に置き換えるということです。
イメージとしては、英語から日本語に翻訳するような感じです。

まずは1か月分のデータを繰り返し処理をできる関数を使います。

大まかな流れとしては、このような形です。

プログラムコード
——————————————
Sub 勤務表自動入力()

Dim i As Integer

Dim year As String
Dim mon As String
Dim resolt As Date

Dim MaxCol As IAssistance

‘入力されていた数値と色塗りセルをクリアにする
Range(“D3:AH6”).ClearContents
Range(“D3:AH6”).Interior.ColorIndex = 0

‘年度
year = Range(“B1”).Value

‘月度
mon = Range(“D1”).Value

‘初月日を入力 例:2017/1/01
resolt = year & “/” & mon & “/1”

For i = 4 To 34

‘D2~AH2セルに日付を入力
Cells(2, i) = resolt

‘指定した日付が該当月だったならば以下の処理を実行
If Month(resolt) = mon Then

‘日付を入力
Cells(3, i) = day(resolt)

‘曜日を入力
Cells(4, i) = Format(resolt, “aaa”)

‘曜日が土なら水色表示
If IsDate(resolt) Then
Select Case Weekday(resolt)
Case vbSunday
Range(Cells(3, i), Cells(6, i)).Interior.ColorIndex = 38
Case vbSaturday
Range(Cells(3, i), Cells(6, i)).Interior.ColorIndex = 20
End Select
End If

‘曜日が平日なら
If Cells(3, i).Interior.ColorIndex <> 38 And Cells(3, i).Interior.ColorIndex <> 20 Then

‘勤務時間7.5を入力
Cells(5, i) = 7.5

End If

End If

resolt = resolt + 1

Next i

MsgBox “処理完了!”

End Sub

——————–

それを踏まえたうえで、

たとえば、
2:日付を打ちかえるという処理ならば

②を見てください。

セルの3行目の左から順番に、該当月(2月なら2月、3月なら3月)の
日付を表示していきます。

もし、これが該当月ではなければ(3月1日なら)、処理を飛ばすことができます。
ですので、シートに入るのは2月の日付のみ入力されることになります。

次に、
3:曜日を変更
という処理は、③に書いています。

これをすれば、カレンダーを観ながら、
この日は何曜日だっけ?と頭を悩ますこともなくなるのです。

4:セルの色を休日に合わせて塗り直し
という処理は、プログラム前半と後半部分に記載。

最初にデータを入れる前に、セルの値とセルの色をゼロクリアしています。
これで、色がリセットされるので、前月のセル色の影響を受けずに、
新しい月のセル色を指定することができます。

それから、日付から曜日を判定して、
セルの色を土曜ならば、水色、日曜ならば、ピンク色に塗り分けます。

ということを行うと、勤務表が完成します。

不具合がないか確かめる

勤務表が完成した後は、正しく動作するか、テストを行います。
デバッグという作業です。
自分が意図する動作になるか、検証します。

こういったもろもろの手続きをすることで、
晴れてプログラムの完成です!

ここまで、いかがでしたか?

巻末に、私が作った簡易版の勤務表をアップしますので、
試しに使ってみたい!という方はダウンロードしてみてくださいね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ABOUTこの記事をかいた人

30代・1児のワーキングママ。 同年代の主人、もうすぐ2歳になる息子の3人暮らし。 お金・時間・仕事から自由になって、家族でしあわせなライフスタイルを送る!と決めて、たまひろライフを運営しています。 相当の人見知り。趣味は読書とパソコン。