1.メニュー機能の追加/変更
(1) 休日マップの作成
作成した休日マップのワークシートへの出力方式に、
『kt固定休日EX』関数 プラス 任意休日・休日解除一覧
の形式を追加します。これにより、初回作成は「休日マップの作成」で対話的に
行い、後で発生した「任意休日・休日解除」の追加・変更はワークシート上の
日付一覧を直接修正するという柔軟な運用ができるようになります。
「休日マップ作成」フォームレイアウトの全面見直しを行い、より使い易くしました。
(2) 時刻入力フォームの追加
『kt時刻入力アドイン』の時刻入力フォームを【kt関数メニュー】に組み込みました。
(3) 「右クリックメニュー」組み込み機能の追加
「Version 情報」フォームを一新して、「右クリックメニュー」への組み込み機能を
付加しました。
2.既存[関数/サブルーチン]の変更
(1) ktCalDate(カレンダー入力フォーム)
六曜(大安・仏滅‥‥)表示モードを追加します。
ktCalDate関数にオプションパラメータとして『六曜』を追加します。
六曜の個別表示(慶事用に「大安・友引」だけを表示するなど)も可能です。
・右クリックで六曜モードへ切り替える → ”六曜”という文字を指定
・最初から六曜モードで表示
→ 表示対象となる六曜を”安友”などと個別に指定します。指定に
使う文字は『先勝・友引・先負・仏滅・大安・赤口』です。全てを
表示する場合は”勝友負仏安赤”になります。尚、並び順には意味
ありませんので自由です。
・右クリックでの六曜モード移行を禁止→ ”禁止”と指定するか、パラメータを省略。
(注)上記以外の文字が指定された場合は”六曜”として扱います。
・六曜モードの場合、六曜表示されていない日付は選択できません。
・パラメータに”六曜”を指定した場合は、右側のカラーガイダンスをクリックする事
で六曜の[表示/非表示]を個別に切り替えられます(非表示にした六曜の日付は
選択できません)。
・パラメータに”安友”など個別指定した場合は、カラーガイダンスをクリックしても切り
替えできません。六曜全て入力可(個別切り替え禁止)にしたい場合は、パラメータ
に”勝友負仏安赤”と六曜全てを並べて指定します。
六曜は七曜(日〜土)と違って、常に規則
正しく繰り返される訳ではありません。旧暦
の各月1日の六曜が月によって決まっており、
そこから順に繰り返されます(1・7月:先勝,
2・8月:友引‥‥)。したがって、旧暦の月
変わり位置で不連続になります。左記の例で
は5/11〜12日の間で[友引・先負]が飛んで
います。右側のカラーガイダンスは六曜モード
の場合だけ表示されます。
「kt関数メニュー」からの表示の場合でも、日付以外の部分を右クリックすると
六曜表示モードに切り替わります。
六曜表示モードのデモ画像(GIFアニメ 21KB)
「4.バグフィックス (3)」の問題に対処する為に、カレンダーフォームの利用対象
期間を、今までの『1900年〜』から『1868(明治元年)年〜』に拡張しました。
合わせて、【文字列として記述された日付(1900年以前の日付を含む)】のセルから
『kt関数メニュー:カレンダー入力』を呼び出した場合に、その年月で初期表示される
ように修正しました。
「ktCalDate 」に時刻入力関数「ktSelClock 」との連携機能を追加します。
「ktCalDate 」の引数に「ktSelClock 」の【AMPM】を指定すると、日付選択後に
時刻入力フォームがポップアップし、時刻選択を以って入力完了となり、「ktCalDate 」
の戻り値には『日付+時刻』のシリアル値が返ります。
(2) kt営業日数 関数
2日付間の営業日数を算出する『kt営業日数』にオプションパラメータ(休日日数)を
追加します。
kt営業日数( 休日Map, 日付1, 日付2 , [ 休日日数=FALSE ] )
「休日日数パラメータ」を【TRUE 】にすると、営業日数の代わりに休日日数を算出
します。既定値は「FALSE]で「営業日数算出」です。下記の式と同じ意味になります。
(日付2 - 日付1 + 1) - kt営業日数( 休日Map, 日付1, 日付2) (日付1≦日付2の場合)
(3) ktTemp休日Map サブルーチン
[kt固定休日EX]関数と同じ様に『曜日条件』の指定を可能とします。
(4) kt干支 関数
『時刻』に対する干支をサポートします。
(5) ktPasteCal サブルーチン
引数に「休日マップ」を追加して休業日表示を可能にしました。
(休日マップの作成フォームで利用しています)
3.新規[関数/サブルーチン]
(1) kt固定休日EX 関数
固定休日コードに『任意休日』を付け加えたパターンで休日マップデータを
作成する関数です。固定休日コードだけでは、実際の営業カレンダーに対応で
きない(任意休日がある為)のをカバーします。
ワークシート上に、固定休日コードで指定できない任意休日の一覧表(祝日は
当然不要です)を作成し、その範囲と固定休日コードを引数として『休日マップ
データ』を作成します。
kt固定休日EXの結果をセルまたは変数(VBA処理の場合)に格納しkt営業日算出
などの引数:休日マップに、その内容を指定して利用します。
注:kt営業日算出などの引数に、直接[kt固定休日EX]を指定しないでください。
関数計算の都度、マップ生成が動いて、非常にレスポンスが悪くなります。
あくまで、どこかのセルまたは変数に先ず格納してそれから、その内容を利用
するという運用を採ってください。
休日一覧は複数列になっても構いません。また「日付以外は無視」するように
していますので、空セルや日付以外のデータが間に挟まっていても問題ありません。
上記の式が書き込んであるセルをkt営業日算出などの休日マップに指定します。
逆に「固定休日コード」で休日とされた日付から『休日指定を解除する日付一覧』も
指定出来ます(省略可)。
kt固定休日EX(固定休日コード,開始年,年数,[任意休日一覧],[休日解除一覧])
[kt固定休日EX]関数の場合に限り、【固定休日コード】の設定内容を拡張し、第2・4
曜日といった指定もできるようにします。これにより、『休日マップの作成』フォームと同じ
機能で、あらゆる休日パターンを簡単に定義できるようになります。
【固定休日コード】の先頭7文字([日〜土]指定部分)に指定する文字の種類『0/1』
に下記の『A〜Z,a〜e 』を加えます。
ワークシート関数による機能提供なので、『休日マップの作成』フォームよりも柔軟な
利用ができます(関数ですから任意休日・休日解除の一覧を修正すれば、即座に反映
されます)。
(2) kt六曜検索 関数
『次の”大安”は何日?』といった日付検索を行なう関数です。
パラメータの組み合わせて「今月[最初/最後]の”大安”」という日付も簡単に求め
られます。
(3) ktSelClock 関数
『kt時刻入力アドイン』の【ktSelClock 】関数を移植しました。
4.バグフィックス
(1) 祝日判定ロジックにおいて『祝日法施行前』判定
本来は有効な
1948年の[秋分の日][文化の日][勤労感謝の日]
を無効と判定していましたので、これを修正します。1948年のみの問題ですので
修正前のロジックでも『現在の日付における判定』には何ら問題はありません。
詳細および修正部分については『祝日判定ロジック』をご覧下さい。
(2) 「日付」パラメータに時刻シリアル値が含まれる場合の問題
各種「kt関数」の『日付』パラメータに【NOW()関数】など時刻を含むシリアル値
を指定し、且つ、その時刻が【12時以降】の場合に、ロジック内で使っている
『CLng関数』の仕様により【”日”が翌日に繰り上がる】問題がありましたので、
これを修正しました。
時刻を含まない(つまりは0時)シリアル値または日付文字列の場合には、修正前
のロジックでも全く問題はありません。
元々、『日付』パラメータに時刻を付したデータが渡される事は想定していません
でしたが、万が一【NOW() 関数】などが指定された場合には問題となりますので
パラメータ受け取り時にシリアル値の小数部を切り落とす処理を付け加えました。
(3) [1900/1/1]と記述されたセルからの「メニュー:カレンダー入力フォーム」で
実行時エラーが発生する問題
これは、Excelの仕様により、セル上で[1900/1/1]と表示されているシリアル値
がVBAでは[1899/12/31]として扱われ、利用対象期間(1900年〜)から
外れる為です。カレンダー入力フォームの利用対象期間を明治元年(1868年)
まで広げてカバーしました。尚、[1900/1/1]の場合は1899年12月、[1900/2/1]
の場合は1900年1月で初期表示されます(本来のシリアル値の解釈に従う為)。
『文字列』として"1900/1/1" ・ "1900/2/1" と記述されている場合は、1月/2月で
初期表示されます。
(4) [kt元号変換]のヘルプ【解説】に記載してある明治元年の開始日付を旧暦日付で
記載していましたので、新暦日付に直しました。尚、ヘルプのみの修正です。
|
||
角田 桂一 Mail:addinbox@h4.dion.ne.jp CopyRight(C) 2001 Allrights Reserved. |