§4-1 カレンダー入力フォーム
kt関数を作り始めたキッカケが、この「カレンダー入力フォーム」です。下記のようにユーザーフォームや
ワークシートのコードモジュールにkt関数『ktCalDate』を記述するだけで、カレンダーフォームをポップ
アップします。あとはマウスクリックだけで日付入力が行なえます(ダブルクリック等のイベントに記述して
下さい)。
(例) Dim MyDate As Date
If ktCalDate(MyDate, Date, 休日Map) Then
TextBox1.Value = Format(MyDate, "yyyy/m/d")
End If
第2パラメータの日付で初期表示して、選択した日付を第1パラメータに返します。
ktCalDate自体は【True:入力あり,False:キャンセル】を返します。
カレンダーフォームを表示した時に『休業日』を強調表示(ピンク)させる事が出来ます。
『休業日』は第3パラメータの「休日Map 」で指定します。上の例では休業日は 「祝日・日曜・
第2/4土曜」です。
この例では休業日は 「祝日・日曜・第2/4土曜」 です。
「営業日のみ/休業日のみ/ある期間内のみ」 といった
入力制限を施す事もできます。
マウスカーソルを合わせた日付が水色で強調表示され、
その日が祝日の場合には『祝日名』がコメント表示されます。
カレンダー入力フォームはVBAからだけでなく、メニューからでも表示できます。「ちょっと、カレン
ダーを確認したい」といった場合に便利です。
メニュー起動の場合は、下記条件で実行されます。
・アクティブセルが日付データの場合は、その日付の【月】で
初期表示します。日付データ以外の場合は、本日の【月】で
初期表示します。
・選択した日付はアクティブセルに設定されます。
・基本的に「休業日」表示はありません。
・アクティブセルが『休日Mapデータ』の場合に限り休業日表示
されますが、この場合には『休日Mapデータ』の確認モードとし
て動作してますので、日付を選択しても、その日付はセルに書き
込まれません。
・『右クリック』で【六曜表示モード】へ移行可能
・時刻入力フォームとの連携はなし (日付のみの入力です)
「日付」以外の部分を右クリックすると、左のように
六曜がカラー表示されます(デモ画像)。
更に、右側の大安・仏滅などのガイダンス部分をクリック
ると、その六曜の表示有無を切り替える事もできます
(非表示にした六曜の日付は選択できなくなります)。
VBAから六曜表示を指定する事もできます。
六曜表示できるのは「1950〜2050年」の期間です。
六曜は七曜(日〜土)と違って、常に規則正しく繰り返される訳ではありません。旧暦の
各月1日の六曜が月によって決まっており、そこから順に繰り返されます(1・7月:先勝,
2・8月:友引‥‥)。したがって、旧暦の月変わり位置で不連続になります。上の例では
5/11〜12日の間で[友引・先負]が飛んでいます。
(注)これで表示される『六曜』は日本標準時を基にしたものです。したがって、中国および
韓国での行事などを求めるのに参考としないで下さい。年によっては【1日のズレ】が
出る場合があります(例:旧暦2001年4月)。詳しくは『kt旧暦』の解説を読んで下さい。
kt関数メニューでの カレンダー入力は 「日付のみ」 ですが、 『 ktCalDate 』 自体には 『時刻入力
フォーム:ktSelClock 』 との連携機能があり、【日付+時刻】の入力も行なえます。右クリックメニュー
に追加されるコマンドには【日付+時刻】の機能もあります。
期間(2つの日付セット)入力用のカレンダーフォームとして[ktMultiCal 関数]が利用できます。
今まで、2つのTextBox に入力された日付に対して
「日付エラー/大小関係/期間超過などでチェックを行って再入力」
といった処理を必要としていたのが、単に[ktMultiCal 関数]を呼び出すだけで済むようになります。
角田 桂一 Mail:addinbox@h4.dion.ne.jp CopyRight(C) 2001 Allrights Reserved.