連載
» 2003年11月15日 05時00分 公開

Tech TIPS:Excelのカレンダーコントロールで簡易スケジュール帳を作成する

Excelで予定表などを作成する時にも、いちいちカレンダーを作成するのは面倒である。しかしMS Officeにあらかじめ用意されたカレンダー・コントロールを利用することで、カレンダーを自由にExcelなどに貼りこむことが可能となる。

[山田祥寛,著]
「Tech TIPS」のインデックス

連載目次

対象ソフトウェア:Excel 2000/Excel 2002/Excel 2003



解説

 Excelワークシート上で予定表などを作成する際に、毎月のカレンダーを作成するのは、単純ながらも意外と面倒な作業である。

 「TIPS―Excelで万年カレンダーを作成する」では、年月を入力するだけで自由に変更できるカレンダーを紹介したが、ある程度、固定的なフォーマットで充分という場合や、単純に参照用としてカレンダーをシート上に用意したいという場合にはMicrosoft Officeに用意されている「カレンダー・コントロール」を利用すると便利である。

 カレンダー・コントロールはそれ自体に書き込みなどはできないものの、年月をコンボ・ボックスで選択することができるし、コントロール上で発生したイベント(日付が選択された、年や月が変更になった、など)に応じてVBA(Visual Basic for Application)と連携できるなど、有利な点も多い。

 ここでは、このカレンダー・コントロールを利用して、選択された日付に含まれるスケジュールを動的に取得・表示するサンプルを紹介することにしよう。やや手順が面倒かもしれないが、各ステップの意味を理解しながら、手順を追っていただきたい。

操作方法

●手順1―元となるスケジュールの一覧表を作成する

 カレンダー・コントロールからスケジュールを動的に呼び出すためには、検索の対象となるスケジュール・リストを別に用意しなければならない。

 まずは新しい[schedule]シートを作成してみよう。次の画面のように、スケジュール・リストのシートには「日付」と「予定」を入力する。リスト上の値は単なる固定的な文字列なので、特筆すべきことは特にないだろう。読者自身のスケジュールを適当に入力してみて欲しい。

用意するスケジュール 用意するスケジュール
[schedule]というシートに、日付とスケジュールの予定を記入する。記入するスケジュールのフォーマットは単なる文字列として扱われるので、時間情報などを先頭に付けて、自由に記入すればよい。

  • サンプル・ファイルのダウンロード
    注:今回のサンプル・ファイルcalendar.xlsをダウンロードするには、上のリンクを右クリックして、calendar.xlsというファイル名で保存してください)

●手順2―新規シートにカレンダー・コントロールを配置する

 Excelのメニュー・バーの[挿入]−[オブジェクト]を選択すると、次のような「オブジェクトの挿入」ダイアログが表示される。現在使用可能なオブジェクトの一覧がリストアップされるので、「カレンダーコントロール9.0」を選択する(インストールされているExcelのバージョンによっては、「Microsoft カレンダー コントロール 11.0」のように、名称やバージョン番号が少し異なっていることがある)。

「カレンダーコントロール」の挿入 「カレンダーコントロール」の挿入
Excelの[挿入]メニューから、「カレンダー コントロール」を選択し、挿入する。
  (1)挿入するコントロール。Excelのバージョンによっては、バージョンなどが異なっている場合がある。

 カレンダー・コントロールは、とくに設定しなくてもそのまま使用することができるが、もしも外見のカスタマイズなどを行ないたい場合には、専用のプロパティ・シートから行なうこともできる。カレンダー・コントロールを選択して右クリックすると、ポップアップ・メニューが表示されるので、[Calendarオブジェクト]−[プロパティ]を選択する。

カレンダー・コントロールを選択するためには、Excelが「デザイン・モード」になっていなければならない。デザイン・モードにするためには、メニュー・バーの[表示]−[ツールバー]−[Visual Basic]を選択し、表示された「Visual Basic」ツール・バーにある三角定規の形のアイコン(デザイン・モード)をクリックしてアクティブにする。


カレンダー・コントロールのカスタマイズ カレンダー・コントロールのカスタマイズ
デザイン・モードでカレンダー・コントロールのプロパティ・ダイアログを表示させることにより、カスタマイズすることができる。背景色や曜日・日付の表示方式、フォントなどを変更することができる。

 カレンダー・コントロールのプロパティ・シートでは、背景色や曜日・日付の表示方式、フォントなどを変更することができる。いずれも動作には影響しないので、適宜、好みに応じて変えれば良い。

●手順3―カレンダー・コントロールから選択された日付を取得する

 デザイン・モードの状態でカレンダー・コントロールをダブルクリックすると、Visual Basic Editorが自動的に開き、「calendar1_Clickイベント プロシージャ」のスケルトンだけが自動生成されているはずだ。

 そこで、以下のように1行だけコードを追加して欲しい。

Private Sub calendar1_Click()
  Cells(1, 1).Value = calendar1.Value
End Sub



 これによってカレンダーがクリックされたタイミングで、選択された日付(calendar1.Value)がセルA1(Cells(1, 1))にセットされる。

●手順4―セルA1の日付をキーにして、スケジュール・リストを検索する

 スケジュール・リストの検索には、VLOOKUP関数を利用すると便利である。セルA2に以下の式を入力してみよう。

=IF(A1<>"",VLOOKUP(A1,schedule!B2:C11,2,FALSE),"")



 VLOOKUP関数の構文や使用方法については、「TIPS―VLOOKUP関数でExcel帳票への自動入力を可能にする」を参考にして欲しい。

 ここではセルA1の値をキーにしてスケジュール・リストの内容を参照し、対応する日付の予定を出力している。「schedule!B2:C11」の部分はスケジュール・リストの大きさによって変化するので、適宜、自分が入力した内容にあわせて変更していただきたい。

●手順5―検索結果を表示する

 セルA2の内容をそのまま見せるようにしてもよいが、カレンダーの日付を切り替えていると、あることに気付くだろう。そう、選択した日付がスケジュール・リストに含まれていない場合には、エラー文字列「#N/A」が返されてしまうのである。そのままでも実害はないが、これではまずいので、エラー時にはメッセージを表示するように処理しておこう。

 セルA18に以下のような式を入力してみて欲しい。

=IF(ISERROR(A2),"本日の予定はありません",A2)



 ISERROR関数は、指定されたセルが「#N/A」や「#REF」のようなエラーを返した場合にTrueを返すという判定関数である。ここでは、セルA2が「#N/A」の場合には「本日の予定はありません」と返すことにする。

 なお仕上げとして「A18:F24」のセルを結合し、抽出された予定がきれいに表示されるように整形しておく。またカレンダー・コントロールの大きさと場所を調整し、計算用のセルA1、A2はユーザの目に見えないようにしておくとよいだろう。その結果できあがった簡易スケジュール表が以下のイメージである。選択した日付に応じて、表示が変わることを確認してみよう。

完成したカレンダー 完成したカレンダー
日付の部分をクリックすると、その日の予定が画面の下に表示される。
  (1)日付をクリックして選択する。
  (2)ここにその日のスケジュールが表示される。

 このように、カレンダー・コントロールは非常に便利でリッチなコントロールである。単なる参照用だけではなく、表に対して、日付を簡易に入力したい場合などにも活用できるので、活用してみてほしい。

「Tech TIPS」のインデックス

Tech TIPS

Copyright© 1999-2017 Digital Advantage Corp. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。