カレンダーをエクセルで作成?マクロで実践してみよう!

「エクセルでカレンダーを作成しよう!」
と言われたら、「誰でもできるよ」
と思うかもしれませんが・・・

実は、エクセルでカレンダーを作成する方法は、
関数とマクロの2パターンあります。

 
簡単だと思った方は、関数で作成するほう
ではないでしょうか?

今回は、マクロを使った上級者向けの作成方法を
紹介します。

 
一般的な作成方法は、エクセル関数を使います。
これは、シート上で行うので簡単に誰でもできます。

マクロを使うのは少々手間ではあります。
ですが、上級者といっても簡単なプログラム
構えないでください。

スポンサーリンク



マクロの説明

まず、マクロとは?からです。

パソコンで動作するソフトウェアやすべての動作は
プログラミング言語で作成されています。
(一連の指示をプログラムと呼びます)

 

マクロというのは、複数の命令を
ひとまとめにして、実行する順番を
定義したものです。

少々やっかいですが、エクセルには
『マクロの記録』という機能があります。

 
これは、実際の操作をレコーダーのように記録し
プログラム言語に変更してくれる便利な機能です。

※これをマクロと呼んで混同しがちですので
 注意してください。

 
たとえば、エクセルのシート上で

  1. A1列1行目に「あ」と入力
  2. それをコピー
  3. B1列1行目を選択
  4. B1列1行目にペースト

そうすると、B1列1行目に「あ」が表示されます。

これをプログラムで記載すると以下のようになります。

Sub Macro1()
ActiveCell.FormulaR1C1 = “あ” …1
Selection.Copy …2
Range(“B1”).Select …3
ActiveSheet.Paste …4
End Sub

といった具合になります。

少々、前置きが長くなりましたが覚えておいてください。

スポンサーリンク



エクセルでカレンダーを作ってみよう

今回は、任意の日付を指定すると、
その月のカレンダーが自動で作成
されるものです。

最初にシートに罫線と曜日をセットしておきます。

EXCEL1

 

I列2行目に好きな日付を入力し、
マクロを実行するとカレンダーができあがります。

Visual Basic Editorを起動します。
『ALT + F11』 で、以下の別画面が開きます。

VBE

左の枠から「ThisWorkbook」を選択し、
下記のプログラムをコピペしてください。

Sub Calendar()

Dim i As Integer
Dim j As Integer
Dim r As Integer
Dim lastDay As Integer
Dim hi As Date

‘日付の入るエリアをリセット
Range(“A2:G7”).Value = “”

‘指定の日付を変数に格納
hi = Range(“B9”).Value

j = 2
r = Weekday(DateSerial(Year(hi), Month(hi), 1), vbSunday)
lastDay = Day(DateSerial(Year(hi), Month(hi) + 1, 1) – 1)

‘日付をセルに格納
For i = 1 To lastDay
Cells(j, r).Value = i
If r = 7 Then
r = 1
j = j + 1
Else
r = r + 1
End If
Next

End Sub

 

マクロを実行

I列2行目に好きな日付を入力し、マクロを実行すると、
カレンダーが作成されます。

それでは、実行してみましょう。

Visual Basic Editor上で、『F5』を押して
エクセルを確認してください。

EXCEL

西暦を指定すれば、過去でも未来でも
作成可能です。
 
いろいろと試してみてください!

 
細かい機能は少々端折りましたが、
全体の作成方法はこんな感じとなります。

ボタンなどにマクロを登録すると、
もっと便利になりますよ!

スポンサーリンク

お気軽にコメントをどうぞ♪