県立広島大学公開講座

表計算ソフトを使って
万年カレンダーを作ろう!
<使い勝手向上編>
午前・午後の部
県立広島大学 経営情報学部
経営情報学科 小川仁士
平成20年12月21日
平成20年度 県立広島大学公開講座
1
1日目の概要について

午前

暦について
 旧暦(太陽太陰暦)・新暦(ユリウス暦、グレゴリオ暦)
 閏月(旧暦)、閏年(新暦)の設け方

万年カレンダー作成のガイダンス
 計算用シート編集のポイント
(基準日からの日数計算、曜日割出し、カレンダー表示など)

作成手順書1に基づく計算用シートの編集と確認
平成20年12月21日
平成20年度 県立広島大学公開講座
2
1日目の概要について

午後

祝日の扱いについて
 現在の祝日(国民の祝日に関する法律より)
 休日について(補足説明)

画像の加工について
 Windows標準のペイントを使った画像編集の基本事項

作成手順書2改に基づくレイアウト用シートの編集と確認
平成20年12月21日
平成20年度 県立広島大学公開講座
3
使い勝手向上編(ガイダンス)

1日目に作成した万年カレンダーの機能アップ
(2日目から参加の方には雛形ファイルを配布します)

入力フォームを追加
 指定したい年・月を表計算シートのセルに直接入力するので
はなく、分かりやすいユーザ・インターフェースを用意し、マウ
スで選択できるようにする

VBA(Visual Basic for Applications)を使ったマクロ
を作成し、自動的に表示内容を変える機能を追加
 年・月を選択すると、対応する和暦が連動して表示される
 レイアウト用シートを表示するとき、指定した月と連動して登
録済みの装飾用画像が適切に選ばれ貼り付けられる

作成手順書3改、作成手順書4に基づく編集と確認
平成20年12月21日
平成20年度 県立広島大学公開講座
4
入力フォームの作成




ユーザインタフェースを用いることで、簡便な月日入力ができるように
する
西暦以外に対応する和暦の情報もコメントとして表示することにより、
年月の選択をしやすくする
入力された月の情報を元にカレンダーに取り込む画像を自動的に選択
する
印刷結果を事前に確認し、すぐに印刷できるようにする
平成20年12月21日
平成20年度 県立広島大学公開講座
5
入力フォームの作成
表計算シートにフォームを追加するには、VBEを起動する必要がある
<ツールメニュー>→<マクロ>→<Visual Basic Editor>と選択する(詳
細は、作成手順書3改で説明している)
 VBEウィンドウで<挿入メニュー>→<ユーザー フォーム>と選択すると、新
しいフォームが作成できる
 フォームの名称を変更した後、ツールボックスからフォーム上へ各種コントロー
ル(オブジェクト)を選んで配置して見た目を調整する(画面設計)


平成20年12月21日
平成20年度 県立広島大学公開講座
6
マクロの作成
入力フォームに配置したコントロール(オブジェクト)などには、初期値を設定す
ることができるが、ユーザの操作(例えばクリックするなどイベントと呼ぶ)に対
して何を行うのか(アクションと呼ぶ)を予め記述しておく必要がある
 イベントにより引き起こされるアクションを記述したものをイベントマクロと呼ぶ
(イベント駆動型)
 ExcelではVBAで記述(プログラム)するのでVBAマクロとも呼ばれる
 コントロールやフォーム以外にブック、シート、セルなどもオブジェクトであり、そ
れぞれが持つ固有の属性(プロパティ)が定義してあり、オブジェクト(の各種属
性)を操作するためのメソッド(例えば文字色を変えるとか、シートを表示する/
しないとかの状態を変える)を利用してマクロ(プログラム)を作成する

例えば、
SpinButtonのここ
がクリックされたとき、
SpinButtonが持つ
値が1つ減り、 それ
が上のLabel7の値
に代入されるようにし
ておくと・・・
平成20年12月21日
平成20年度 県立広島大学公開講座
値が1減って表示される
7
マクロの作成
マクロを記述する場所は、関連するオブジェクトをダブルクリックして開くコード
ウィンドウの中に記述する
 前のスライドで示した例にだけ関係したマクロを下に抜き出してみると・・・

Private Sub UserForm_Initialize()
With SpinButton1
.Min = 1
.Max = 12
.Value = Month(Now)
Label7.Caption = .Value
End With
End Sub
SpinButton1の最小値と最大値
を設定し、初期値を今月にする
Label7に値を代入する
Private Sub SpinButton1_Change()
Label7.Caption = SpinButton1.Value
End Sub
平成20年12月21日
平成20年度 県立広島大学公開講座
Label7 に SpinButton1
の値を代入する
8

もっとExcelVBAのプログラミングを勉強したい方へ
Excel VBAスパテク368
2007/2003/2002対応
福光洋子、チーム・エムツー 著
アリエスコンピュータ監修
翔泳社
定価:本体2,380円+税
平成20年12月21日
平成20年度 県立広島大学公開講座
9
それでは、作成手順書3改、作成手順書4に従って
万年カレンダーの使い勝手を向上していきましょう!
(余力のある方は、祝日や振替休日などの文字色を変更する
機能を追加した作成例5にも挑戦してみてください)
平成20年12月21日
平成20年度 県立広島大学公開講座
10