カレンダーコントロールをユーザーフォームで使うには?

Question 48.9   Previous Next
詳細は こちら こんにちは、"500連発" にはお世話になっております。
早速ですが・・・ 【カレンダーコントロール9.0】をVBAのフォームの上に貼るには、どうしたらいいのでしょうか。【カレンダーコントロール9.0】は、エクセルブックの「コントロールボックス」の中の 『コントロールの選択』の中にあります。

エクセルのシートの上に貼ることはできますが、フォームの上に貼ることができません。 これができると、日付入力が非常に便利になると思います。 ナツメ社の[VBAハンドブック]のP.28に、formの例としてその画像が載っています。
それを作りたいのです。よろしくお願いします。Excel 2000を使っています。
Answer   Copyright (C) 2001.9.13 永井善王
注意事項
カレンダーコントロールは Access 2010で削除されました。
よって、Microsoft Office Professional 2010の一部であるExcel 2010であっても利用できません。
カレンダーコントロール
いいアイデアですね。 確かに、その本のそのページに画像だけが載っています。しかし現在のところ、このコントロールについて解説されている本やWebページは、ほとんど見当たりません。

カレンダーコントロールとは左図のように、フォームまたはワークシートに表示可能な月別カレンダーで、日付を設定したり取得することができます。
このコントロール上でユーザーが、日付をクリック、タブルクリック、キーを押したときにはイベントが発生するので、マクロで利用することが可能です。 また、カレンダーの外観の制御、年月日の設定などにさまざまなプロパティとメソッドが、準備されています。

あなたが言われるとおり 「日付入力が非常に便利になる」、正確性が向上するなど多くのメリットがあり、実用価値の高いコントロールとして評価できます。実務では意外と日付入力ミスや勘違いによるトラブルがありますから。
コントロールツールボックス 1. コントロールツールボックス
VBE画面でユーザーフォームをデザインするときに、右図のようなツールボックスが表示されます。(カレンダーコントロールが追加済)
カレンダーコントロールは標準では表示されないので、使用する前に追加しておきます。

2. 追加するための操作方法
 (1) VBE画面の[ツール]メニュー [その他のコントロール]をクリック
 (2) [カレンダー コントロール 9.0]をチェックして [OK]ボタンをクリック
コントロールの追加ダイアログボックス
※ カレンダーコントロール9.0は、Office2000の場合、コントロールパネルのアプリケーションの追加と削除で、Microsoft Access for Windowsの中の[カレンダー コントロール]を選択してインストールすれば、左図のように[利用可能なコントロール]に表示される。 インストールはマクロを実行するだけのパソコンにも必要だが 左図のチェックはなくても可。
(参考) OfficeのCD-ROMをファイル名 Mscal.ocx で検索すればはっきりする

3. カレンダーコントロールの使用方法
ユーザーフォームにデザインするときの操作方法は、テキストボックスなどの他のコントロールと同様です。
つまり、ツールボックスのカレンダーコントロールをクリックするとマウスボインタの形状が変わるので、ユーザーフォーム上に矩形を描くだけです。ユーザーフォームにはコマンドボタンなど他のコントロールを、一緒に描いてもかまいません。
※ カレンダーコントロールが「9.0」でないとプロパティの初期設定が必要な場合がある

4. マクロの作成方法
ユーザーフォームのコード画面で、イベントマクロとして作成します。次に一例を示します。
注意点としては、日付をセルにセットする場合は、セルの書式設定の表示形式を適当に設定する必要があります。
'------------------------------------------------------------------------------
Private Sub Calendar1_Click()                   'クリックされた時に動作する
    Cells(11, 7) = Calendar1.Value              '現在の日付をG11セルにセットする
End Sub
'------------------------------------------------------------------------------
5. カレンダーコントロールのイベント
ユーザーがカレンダーコントロールにフォーカスがあるときに、下表に該当する操作をするとイベントが発生します。
イベント 説明
AfterUpdate 新しい日付に移動しカレンダーが再描画された後に発生する
BeforeUpdate 新しい日付に移動した後でカレンダーが再描画される前に発生する
Click 日付をクリックすると発生する
DblClick 日付をタブルクリックすると発生する
KeyDown キーを押すと発生する
KeyPress ANSI 文字キーを押して離すと発生する
KeyUp キーを離すと発生する
NewMonth カレンダーの日付が新しい月に変わったときに発生する
NewYear カレンダーの日付が新しい年に変わったときに発生する

6. カレンダーコントロールのプロパティ
Excel 2002 および 2000では 22個あります。その内の主なものは次のとおりです。
区分 プロパティ
基本表示 MonthLength、DayLength、FirstDay、ShowTitle、ShowDateSelectors、ShowDays
立体表示 GridCellEffect、GridLinesColor、ShowHorizontalGrid、ShowVerticalGrid
強調表示 ValuesNull
フォント DayFont、GridFont、TitleFont
BackColor、DayFontColor、GridFontColor、TitleFontColor
選択 Year、Month、Day、Value
もう少し詳しい説明が 「カレンダーコントロールのプロパティ一覧」 にあります。

7. カレンダーコントロールのメソッド
Excel 2002 および 2000では 11個あります。その内の主なものは次のとおりです。
機能別 メソッド
進める NextYear、NextMonth、NextWeek、NextDay
戻す PreviousYear、PreviousMonth、PreviousWeek、PreviousDay
日付設定 Today
再描画、他 AboutBox、Refresh
もう少し詳しい説明が 「カレンダーコントロールのメソッド一覧」 にあります。
サンプルブックのダウンロード
※ 一旦ハードディスクに保存し、後で改めて開いてから実行してください。
 
「カレンダーコントロール9.0」専用 (49KB YNxv9837_Calendar_90.xls)
 
9.0でない「カレンダーコントロール」でも9.0でも使用可能 (46KB YNxv9837_Calendar.xls)

Excel VBA Macro