ktCalRepeat

カレンダー入力フォームから、指定したセル範囲に対して連続して
日付入力を行なうサブルーチンです。


【 構 文 】

Call ktCalRepeat ( 入力範囲, [基準日], [休日Map], [Pos_X], [Pos_Y],
[入力Msg], [営休制限], [期間制限Fr], [期間制限To],
[六曜] )

入力範囲 ‥‥‥ Range 型
基準日 ‥‥‥ Variant(Date 又は 日付文字列)型    (省略可)
休日Map ‥‥‥ String 型 (省略可)
Pos_X ‥‥‥ Variant(Integer / Empty)型 (省略可)
Pos_Y ‥‥‥ Variant(Integer / Empty)型 (省略可)
入力Msg ‥‥‥ String 型 (省略可)       
営休制限 ‥‥‥ Variant(Integer) 型 (省略可)       
期間制限Fr ‥‥‥ Variant(Date 又は 日付文字列)型 (省略可)       
期間制限To ‥‥‥ Variant(Date 又は 日付文字列)型 (省略可)       
六曜 ‥‥‥ String 型 (省略可,既定値:"禁止")       

【 パラメータ 内容 】

入力範囲 ‥‥‥ 入力した日付を書き込むセル範囲を指定します。
単一セルの場合には「何もせず」に終了します。必ず複数セルの範囲を指定して下さい。なお、プロテクトされているセルを含む場合も「何もせず」に終了します。

指定されたセル範囲のシートが Active でない場合は、自動的に、そのシートは Active になります。

単に[ Range("A1:A5") ]等と記述すると、そのマクロの実行時の状況によって目的とするシートとは別のシートが対象になる可能性があります。
[ ActiveSheet ]や[ WorkSheets("Sheet1") ]等、シート指定も付するようにして下さい。

Range("B2:D4") という指定の場合の入力順は【左→右/上→下】と行単位で進みます(下側の図)。列単位で【上→下/左→右】の順(上側の図)に進めたい場合は、
    Range("B2:B4, C2:C4, D2:D4")
という風に指定します。

Union(Range("B2:B4"), Range("C2:C4"), Range("D2:D4")) という指定も
ありますが、隣接するセル範囲では「一繋がり」の範囲として補正されて
しまい、Range("B2:D4") という意味になってしまいます。離れているセル
ならば、Union を使っても大丈夫です。
 
基準日
 〜 六曜
‥‥‥ [ ktCalDate 関数 ]を参照して下さい。
 

【 解 説 】

マクロを記述しなくても「kt関数メニュー:日付連続入力」で、この機能を利用できます。

[ktCalDate ]関数は、ひとつの日付入力に対する処理なので、複数セル範囲に連続して入力
しようとした場合、カレンダーフォームの表示/消去がチラついてしまいます。

この[ktCalRepeat ]サブルーチンは、セル範囲を引数として渡す事で、その範囲に、カレンダー
フォームを表示したまま、日付入力を続ける事ができます。その代わりに、入力した日付はマクロ側
には戻らず、直接そのセル範囲に書き込まれます( "yyyy/m/d" 以外の日付書式にしたい場合は、
事前に、そのセルに書式を定義しておいて下さい)。

日付入力は、セル範囲全てに入力を終えるか、「入力キャンセル=×」するまで続きます。

「入力範囲」が【保護】されている場合は、何も処理せずに即終了します。


【 使 用 例 】

Call ktCalRepeat(Worksheets("Sheet1").Range("B2:B4, D2:D4, F2:F4"), Date, kt_土日祝 )


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


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