§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 関数]を呼び出すだけで済むようになります。




Home  kt関数 Top  kt関数 Ref  Back Page  Next Page


角田 桂一 Mail:addinbox@h4.dion.ne.jp CopyRight(C) 2001 Allrights Reserved.