Excelvbaを使って年月のカレンダー予定表を作成したら役に立った!

おすすめ情報

Excelで毎月カレンダー予定表を作りたいけど、楽な方法ないかな?

毎月、日付をかいて、罫線引いてと、結構手間がかかるんだよね。

 

ボタン一つで作成できるといいのだけどなぁ…

毎月、Excelでカレンダー予定表を作るのって結構大変ですよね、日付書いて、土日に色分けしてと、色々と手を加えれば、時間が取られてしまいます。

年月だけを指定して、ボタン一つでその月のカレンダーを作れると嬉しいですよね。

そこで、Excelのvbaを使って、ボタンひとつでカレンダー予定表ができるツールを作ってみました。

そうそう、こういうのが欲しかったんですよ!

私は7年程、システムエンジニアで実務をやっていた経験があり、その時Excelのvbaも使用していました。

それでは、Excelのvbaでカレンダー予定表を作ってみましょう!

 

 

Excelvbaでカレンダー予定表を作ってみた

今回vbaで作ったカレンダー予定表は以下の4点の機能を搭載しています。

  • 年月を入れてボタンを押すと、新しいシートとカレンダー予定表が作られる
  • 土曜日は青、日曜日は赤の文字色
  • カレンダーにはその日ごとの予定記入欄がある
  • シート名は記入された年月とする

へー! 年月を入れてボタンを押すとカレンダー予定表が出来るんだ!

それでは作成したvbaの機能について、詳しく説明して行きますね!

 

カレンダー予定表作成の年月入力画面

年月を記入できるようになっています。そして、作成ボタンを押すと、新規のシートが自動で作られて、そのシートに記入された年月のカレンダー予定表が作成されます。

 

作成されたカレンダー予定表

vbaを使って作成されたカレンダー予定表には日付とその日の予定を記入する欄を設けています。土曜日は青、日曜日は赤色の文字色にしています。

カレンダー用に新しくシートを作成します。シート名は、入力された年月となっています。

既に入力された年月のシートが作成されていたら、作れないようにしています。

 

 

Excelvbaでカレンダー予定表の作成方法

Excelvbaを使って、カレンダー予定表の作成方法について説明します。

 

年月を入力するセルを用意する

1.「年月入力シート」という名前のシートを作成します

2.年月入力シートを以下の通りにして、入力画面を作ります。

  • B1セルに「入力した年月のカレンダーを作成します。」と入力します
  • B2、D2セルのセル色を変えます
  • C2に「年」、E2に「月」と入力します
  • 図形(正方形)を入力欄の隣に置いて、「作成」と入力します

まずは入力画面を作るのですね!

 

カレンダー予定表のテンプレートを用意する

新しいシートを作成し「temp」と名前をつけて、以下の通りにします。

  • B1に「年」、B2に「月」、C2に「カレンダー」と入力します
  • A3に「日付」と入力し、背景色を変更します
  • B3からG3を結合して、「予定」と入力し、背景色を変更します
  • B4からG4を結合して、B5からG5…….B34からG34まで結合していきます
  • B3からG34までを選択して、罫線を引きます

カレンダー予定表のテンプレートだね、これに年月日が入るんだね!

 

vbaを使ってコードを入力する

1.ツール⇨マクロ⇨マクロの表示よりマクロの画面を表示する

2.マクロ名を「カレンダ」と入力して、「+」ボタンを押す。するとvbaエディターが開きます。

3.vbaエディターに以下、色付き枠内のソースをコピペする。

  Dim strDate As String 
  Dim StrWeek As String 
  
  With Worksheets("年月入力シート") 
  If Not (IsDate(.Range("B2").Value & "/" & .Range("D2").Value & "/1")) _
      Or (.Range("B2").Value < 1000) Then 
       MsgBox "年月の入力が間違いです"
       End 
  End If 

  Worksheets("temp").Copy after:=Worksheets("年月入力シート") 
  Worksheets(2).Visible = True 

  On Error GoTo myError Worksheets(2).Name = .Range("B2").Value & Format(.Range("D2").Value, "00")
  Worksheets(2).Cells(1, 1).Value = .Range("B2").Value
  Worksheets(2).Cells(2, 1).Value = .Range("D2").Value
  strDate = .Range("B2").Value & "/" & .Range("D2") & "/" 
  End With

  With Worksheets(2)
  For i = 1 To 31 
    If IsDate(strDate & i) Then 
    .Cells(3 + i, 1).Value = i 
    Select Case Weekday(strDate & i) 
      Case 1
        StrWeek = "(日)" .Cells(3 + i, 1).Font.Color = RGB(255, 0, 0) 
      Case 2 
        StrWeek = "(月) " 
      Case 3 
        StrWeek = "(火)" 
      Case 4 
        StrWeek = "(水)" 
      Case 5 
        StrWeek = "(木)" 
      Case 6 
        StrWeek = "(金)" 
      Case 7 
        StrWeek = "(土) " .Cells(3 + i, 1).Font.Color = RGB(0, 0, 255) 
      End Select 
     .Cells(3 + i, 1).Value = .Cells(3 + i, 1).Value & StrWeek 
    Else 
      Exit For
    End If 
  Next i
  .Select 
  End With 
Exit Sub

myError:
 Application.DisplayAlerts = False
 Worksheets(2).Delete 
 Application.DisplayAlerts = ture 
 Worksheets("年月入力シート").Select
 MsgBox " 既に作成されている年月です"

以上でExcelvbaを使ったプログラミングは終わりです。

プログラミングは難しいけど、コピペすればいいんですね!

 

ボタンにマクロを登録する

作成ボタンを右クリックして、マクロの登録をします。

作成した「カレンダ」マクロを選択します。以上でカレンダー作成機能が終わりです。

よし、作成ボタンにマクロ登録したよ!

 

 

Excelvbaでカレンダー予定表が作られるか確認

vbaでカレンダー予定表を作る機能を搭載したら、実際に動くかどうか試してみましょう!

B2に「2019」と入力して、D2に「2」と入力して作成ボタンを押します。

上記のような予定表ができたら成功です。これからは、好きな年月のカレンダー予定表が作成できますよ!

やった、これでカレンダー作りが楽になります!

 

 

まとめ

Excelvbaを使って、以下の機能を持つカレンダー予定表を作成するプログラムを作りました。

  • 年月を入れてボタンを押すと、新しいシートとカレンダー予定表が作られる
  • 土曜日は青、日曜日は赤の文字色
  • カレンダー予定表にはその日ごとの予定記入欄がある

このプログラムがあれば、いつでも好きな年月のカレンダー予定表が作成することが出来て、少し便利になります。

また、簡単なvbaプログラミングなので、vbaについて勉強にもなると思います。

この記事が、あなたのお役に立てるなら幸いです。

コメント

タイトルとURLをコピーしました