ロゴ(青) Excel/VBA Tips ロゴ(緑)

Tips06: カレンダーコントロール色々

 1. 【重要】 Excel と カレンダーツール のライセンス問題について
 2. Access 付属の【 MSCAL.ocx 】  (Office2007 まで。Office2010〜では利用不可)
 3. Visual Basic 付属の【 DTPicker Control 】  ,  ライセンス&配布 問題の回避手法
 4. Visual Basic 付属の【 MonthView Control 】  ,  ライセンス&配布 問題の回避手法
 5. kt関数アドイン の カレンダー入力フォーム
 6. カレンダークラス アドイン
 7. その他の「カレンダー入力」フリーソフト
 8. カレンダー入力フォーム 基本コード (カレンダーフォームを自作したい人はコレを参考に)
 9. カレンダーフォームをクリックで呼び出す(MSCAL の例)
10. Excel2013 向け】 セルに日付入力するカレンダーコンテンツアプリ
11. 【海外】で見つけたカレンダーコントロールクラス(脱 擬似コントロール配列)
12. (参考) Java Script によるカレンダー入力フォーム  ( 2011/3/20 祝日判定スクリプト アップデート )
13. (参考) Java Script によるカレンダー入力フォーム(2)  ( 2011/3/20 祝日判定スクリプト アップデート )



[ この場所へのリンク ]
【 Excel と カレンダーツール のライセンス問題について 】

  カレンダーコントロールといえば、日付入力の際に非常に便利なコントロールですが、残念な事に
エクセルには含まれていません

  そこで、一般に使われているのはAccess に付属しているコントロールである『MSCAL.ocx 』です。
エクセル関係で普段カレンダーコントロールといえば『MSCAL.ocx 』を指します。ただし、当然の事
ですが、Access 付属のコントロールなので、Access の無い環境(OFFICE Personal )では利用でき
ません(Access がインストールされているコンピュータから、MSCAL.ocx のみを抜き出して他のコン
ピュータにインストールする行為はライセンス違反です
)。
    「Microsoft Access 使用許諾契約書」 より引用
    2. その他の権利と制限
      ・ 構成部分の分離
        本ソフトウェア製品は1つの製品として許諾されています。
        その構成部分を分離して複数のコンピュータで使用することはできません
 
 
  (補) Visual Studio 6.0 SP4 以降の環境で作成された VB 6 ソフトに対しては、そのVB 6 ソフト
          と共に MSCAL.ocx を再頒布することは許諾されています( KB 412867 の中程参照 )。

 
  (注) Access2010 から MSCAL.ocx が無くなりました

          したがって、Excel 2010( Office2010 Pro )では、カレンダーコントロール( MSCAL )
          が利用できません

        a) Office2007以前( Pro ) から Office2010( Pro ) へのアップグレードユーザーの場合

              Office2007以前を残してマルチインストールにしておく事を、お勧めします。
              そうすれば、少なくとも、その環境ではOffice2007以前のMSCALを利用できます。

        b) Office2010( Pro )新規ユーザー および Office2010( Pro 以外 ) ユーザーの場合

              如何なる方法でも、Excel で MSCAL を利用する事はできません。

              尚、以下の利用形態は ライセンス違反 となりますので、注意してください。
                  -- 上記の [ アップグレード前バージョン( 2007以前 Pro ) ] の代わりに
                      [ Access Runtime ] を Microsoft サイトからダウンロードして配布する   --
              ( 2011/8/31 Microsoft に確認しました )

              [ Excel で利用する為 ] だけに Access Runtime をインストールする事はライセンス
              上、許諾されていません。Access Runtime は [ Access プログラム と共に、ペアで
              利用/配布する ] 事のみが許諾されています。


  VisualBasic がインストールされている環境ならば、VB付属のコントロールである
        『MonthView Control 』 と 『DTPicker (DateTimePikcer )
が利用できます。
  (補)   Visual Basic をインストールしていないのに、エクセルで[ DTPicker / MonthView ] が、コントロール
          ツールボックスの一覧に載っていて利用できる場合がありますが、これは、その PC に Visual Basic
          で作られた何らかのソフトがインストールされている為です。
            そのソフトを使うに辺り、[ DTPicker / MonthView ] を、その一部として含むライブラリ(mscomct2.ocx )
          が必要であり、そのソフトをインストールする際に一緒にインストールされた為です。
            これによって、偶々、エクセルからも見える状態になっているだけです。この場合、エクセルからの
          利用は「正規のライセンス」に基づくものではありませんので注意して下さい。Visual Basic がインス
          トールされている PC ならば、ライセンスを取得(購入)したPCですから、そのPCで使う分には許さ
          れる範囲と思われますが、Visual Basic がインストールされていないPCでは、VBで作ったソフトを
          使う為にのみ許諾された部品という扱いになりますので、これをエクセルから利用するのはライセン
          ス上の疑問が残ります。

            また、エクセルで使う為だけに、[ DTPicker / MonthView ] を含むライブラリ( mscomct2.ocx )を
          単独でコピー/インストールする行為はライセンス違反になります。このライブラリ は必ず VisualBasic
          で作られたソフトと一緒にセットで取り扱うようにライセンスで定められています。つまり、「VB ランタ
          イム」 ファイル をエクセルで使う目的で 他からコピーする行為はライセンス違反です。


            Vector や VB ソフト開発者HP 等から 「VB ランタイム」 のダウンロードが出来ますが、これは VB ソフト
          の配布ファイルが 『VB ランタイムを含まない形』 で提供されているケースに対して、その VB ソフトを実行
          する環境を整える事を目的としたものです。Excel や その他 VB 以外のソフトで利用する為のものではあ
          りません。

    「VisualBasic 使用許諾契約書」 より引用
  3.1.2 再頒布可能コード 使用範囲 Microsoft VisualBasic、‥‥について
    (中略) お客様はエンドユーザーに、使用範囲を広げた再頒布可能コードに重要かつ主要な
    機能を追加する使用許諾製品またはWebページと共におよびその一部としてのみ本ソフト
    ウェア製品の特定の部分(READIST.txt に 「使用範囲を広げた再頒布可能コード」 と指定され
    ている部分) をオブジェクトコードで複製および再頒布することを許可できます。
    上記の場合、お客様は以下の条項に従わなければなりません。
        (中略)
    (b) お客様のエンドユーザーは以下の条項に同意しなければなりません。
        (i) 使用範囲を広げた再頒布可能コードに重要かつ主要な機能を追加するエンドユーザー
            が開発したソフトウェア製品と共におよびその一部として、その再頒布可能コードを
            オブジェクトコードでのみ頒布しなければなりません。

  5.7 構成部分の分離
    本ソフトウェア製品は1つの製品として許諾されています。本契約書第1条の場合を除き、
    その構成部分を分離して複数のコンピュータで使用することはできません

  [ READIST.txt ]
    使用範囲を広げた再頒布可能コード:
      mscomct2.ocx
 



なお、[ MSCAL / DTPicker / MonthView ]コント
ロールは標準では「ツールボックス」に載って来ま
せんので、「ツールボックス」上で右クリックして
      「その他のコントロール」ダイアログ
でチェックを入れておく必要があります。


  Access もVisualBasic も無い環境では、
      ・ 自分で代用フォームを自作する
      ・ 「kt関数アドイン」のようなアドインソフトを利用する
      ・ APIを使って直接[ Windows のカレンダーコントロール]を呼び出す
といった方法を採る事になります。



[ この場所へのリンク ]
Access 付属の【 MSCAL.ocx 】
一月分のカレンダーを表示するコントロールです。
コンボボックスで年/月を切り替え、クリックした日付
のシリアル値は[Value プロパティ]で取得します。
このように、[MSCAL]だけを貼り付けたUserFormを
用意して、日付を入力するTextBox からDblClick で
呼び出すなどして利用するようにします。

  『 MSCAL.ocx プロパティ一覧 / 利用例


    (注) Access2010 から MSCAL.ocx が無くなりました ( こちら を参照 )
          Access2007から追加された「日付選択コンテンツコントロール」が MSCAL.ocx の代わりに
          なりますが、これはExcelからは利用できません。



      [MSCAL]のヘルプは下記の場所にありますので、ショートカットを作っておくと便利でしょう。
          [ C:\Program Files\Microsoft Office\Office\MSCAL.hlp ]
                  (上記は、Windows98SE/Access2000 環境でのパスです)


[ この場所へのリンク ]
    Access がインストールされてる(Office Pro または Access単体)のに、上記ダイアログにカレンダーコントロールが
    表示されない場合には、カレンダーコントロールの追加インストールを行なって下さい(Office Pro または Access
    のCD-ROMを用意)。
        (a) コントロールパネルの「アプリケーションの追加と削除」を実行
        (b) アプリケーション一覧から、Office Pro(またはAccess )を選択
        (c) インストール選択で『機能の追加/削除』を選択
        (d) Access の一覧から「カレンダーコントロール」を選択して【マイコンピュータから実行】に設定を変更する
    (注) Access2010 から MSCAL.ocx が無くなりましたので、Excel 2010(Office 2010 Pro) ではカレンダー
          コントロールは利用できません。



カレンダーコントロールのバージョンによって、互換性に問題があります。
    Access2000以前の[9.0]Access2002以降の[10.0]では、DayLength/FirstDay プロパティ
    同じ値でも結果が異なります(2004/2/9 追記)。  この不具合の回避方法はこちらを参照。
       参考HP : すぐに役立つエクセルVBAマクロ集 ( 解説ページ )
                      [ACC2002] カレンダーコントロールのプロパティの設定値で異なる結果が表示
                      補) [DayLength]の「設定値と表示内容」が上記で異なっていますが 『すぐに役立つ』の方が正しいです。

[ この場所へのリンク ]
VisualBasic 付属の【 DTPikcer
1月分のMonthView とTextBox が合体したコントロールです。
ドロップボタンをクリックするとMonthViewと同じ外観のカレン
ダーがポップアップします。必要な時だけカレンダーが出るので、
フォームレイアウト上、使い易いコントロールです。
普段の外観がコンボボックス形状なので、UserFormの中に
他のコントロールと一緒に配置して利用できます。





[ この場所へのリンク ]
※ VB不要でAPI により実装する方法 (ライセンス&配布 問題の回避手法)
        DTPicker コントロールは、元々Windows(IE) が持っているコモンコントロールですので、API を使う事で呼び出す
      事ができます。「VisualBasic が有ると利用できる」というのは、
              「この面倒くさいAPI 回りの処理を隠蔽したActiveXコントロールとして実装されるので、
              ユーザーはVBE上で簡単に貼り付けたり、プロパティ操作だけで利用できる。」
      という事です。逆に言えば、小難しいAPI 処理を厭わなければ、VisualBasic が無くても利用できるという事になります。
        この方法を使うと、アドインソフトもAccess/VisualBasic も必要なく、どのPCであってもカレンダーコントロールが利用
      できます。この事は、作成したブックを他のPCへ持って行く場合に、
              ・相手PCの環境(アドインソフト/Access/VisualBasic の有無)
              ・配布方法(アドインソフトのインストールや参照設定)
      に気を使う必要が無いという事です。

ここで紹介するのは、井上 治さんが、EUC(MOUGの前身)時代に、青山 彩さん
という方からアドバイスを受けたノウハウを元にして作ったコードです。

  VisualBasic が無い環境で『DTPicker 』コントロールを使う方法の解説 (Ver 3.3 )
     (2004/3/21 解説文見直し修正)
     (2004/4/26 日付編集文字列の解説を追加)
     (2004/4/27 配色変更用のプロパティを追加)
     (2004/5/2  配色変更でシステムカラーを指定可能に)
     (2004/6/5  Ver 2 をリリース)    旧Ver1 は こちら
     (2004/11/25 Ver 3 をリリース)
     (2004/11/25 Ver 3.1 をリリース)
     (2005/3/11 Ver 3.2 をリリース)
     (2011/9/27  Ver 3.3 [ x64 対応版 ] を リリース)


[ この場所へのリンク ]
VisualBasic 付属の【 MonthView Control
複数月を一度に表示させる事も出来るコントロールです。
日付選択も「クリックによる1日のみ」だけでなく、「マウスドラッグによる
複数日選択」も可能です。
このように、[MonthView]だけを貼り付けたUserFormを用意して、日付を
入力するTextBox からDblClick で呼び出すなどして利用するようにします。

横に2ヶ月分表示させて、日付範囲選択を
している例です。




[ この場所へのリンク ]
※ VB不要でAPI により実装する方法 (ライセンス&配布 問題の回避手法)
        MonthView コントロールは、元々Windows(IE) が持っているコモンコントロールですので、API を使う事で呼び出す
      事ができます。「VisualBasic が有ると利用できる」というのは、
              「この面倒くさいAPI 回りの処理を隠蔽したActiveXコントロールとして実装されるので、
              ユーザーはVBE上で簡単に貼り付けたり、プロパティ操作だけで利用できる。」
      という事です。逆に言えば、小難しいAPI 処理を厭わなければ、VisualBasic が無くても利用できるという事になります。
        この方法を使うと、アドインソフトもAccess/VisualBasic も必要なく、どのPCであってもカレンダーコントロールが利用
      できます。この事は、作成したブックを他のPCへ持って行く場合に、
              ・相手PCの環境(アドインソフト/Access/VisualBasic の有無)
              ・配布方法(アドインソフトのインストールや参照設定)
      に気を使う必要が無いという事です。

VisualBasic が無い環境で『MonthView 』コントロールを使う方法の解説 (Ver 1.2 )
     (2004/ 5/ 4 Ver 1.0)
     (2005/ 3/10 Ver 1.1 をリリース)
     (2011/ 9/27 Ver 1.2 [ x64 対応版 ] を リリース)



[ この場所へのリンク ]
(注) kt関数アドイン Ver3.00 は 64bit 版エクセルでは利用できません(エラーになります)。

kt関数アドインの【 ktCalDate 関数 】
( 「昭和の日」は Ver3.00 で対応しました )
MSCAL等のコントロールと違って、関数を呼び出すだけ
でポップアップするフォームです。祝日機能・入力期間
制限機能・六曜表示機能など既存コントロールには
無い機能が盛り沢山です。
利用方法は、ktCalDate 関数ヘルプ参照。

GIFアニメによるデモ画像
      〃            六曜モードのデモ画像


kt関数アドインの【 ktCalRepeat サブルーチン】
上記のカレンダーフォームを使って、フォームを表示したままで、セル範囲に連続的に日付入力
可能になりました。
利用方法は、ktCalRepeat サブルーチンヘルプ および kt関数メニュー:日付連続入力 参照。


kt関数アドインの【 ktMutiCal 関数 】
( 「昭和の日」は Ver3.00 で対応しました )
MonthView コントロールに相当するカレ
ンダーフォームです。期間日付の入力が
簡単にできます。勿論、祝日/営業日機能
搭載です。
利用方法は、ktMultiCal 関数ヘルプ参照
GIFアニメによるデモ画像
   

[ この場所へのリンク ]
(番外)入力には使えませんが、表示専用のアクセサリーとして、このようなツールも
            あります。『kt貼付暦アドイン/kt関数アドイン』の【 ktPasteCal( 「山の日」 対応済 )
            利用サンプル(kt関数アドインの休日マップ作成フォーム)



[ この場所へのリンク ]
カレンダークラス アドイン Ver1.30 】  ( 「2014/5/29 山の日」 対応済 )
  (注) カレンダークラスアドイン Ver1.30 は 64bit 版エクセルで利用可能です。

      Access も要らない、VB も要らない、API なんて使わない!
      必要なのは 『Frame コントロール』 唯一つ!

上記の「kt貼付暦アドイン」のクラス化によってイベント処理が追加され、入力系ツールとして
利用可能になりました。MonthView スタイルDTPicker スタイルの2種類をサポートします。



Ver1.30 のデモブックに、このクラスを
利用した「期間入力フォーム」のサンプル
を用意しました。


[ この場所へのリンク ]
【その他のカレンダー入力ソフト】
カレンダーコントロールを代替するフリーのアドインソフトは「kt関数アドイン」以外にも幾つか
公開されています。現時点で、私が把握している所では下記の4つがあります。

    MightyFrogさん  「超便利かれんだあ Ver3.10」  (公開終了)
            旧バージョン: MOUG内ソフトコーナー 超便利かれんだあ Ver3.00

    k窓 川口さん 「Excel 入力支援 kデート Ver2.15 」 
            バージョンアップしてシェアウェア『 k蘭 』になりました。「kデート」単体はVectorから

    藤代千尋さん 「CF 日付選択フォーム(DTPicker もどき)」
            ダウンロードは Excel ファンクラブ フリーソフトコーナー(4頁)から

    田舎モンさん  「カレンダーアドイン V2.00」
           ダウンロードページ「田舎モン 特産物」  解説



[ この場所へのリンク ]
【カレンダーフォーム】のサンプルコード  ( 2004/6/24 追記 )

    『擬似からの脱却』の「§11 その他のサンプルコード」にカレンダーフォームの基本コード
    紹介していますので参考にして下さい(ktCalDate と同じように、マウス位置が強調表示されて、
    ワンクリックで日付入力するタイプです)。

    尚、このサンプルコードは[ clsBpca ] クラスを利用したものです。[ clsBpca ]クラスの仕組み 及び
    使い方については『擬似からの脱却』をお読み下さい。

    [ clsBpca ]によるコントロール配列の代わりに、ラベルの[ Click / MouseMove ]イベントをクラスモ
    ジュールを使って擬似コントロール配列(§1〜§5 参照)にしても良いです。
 


[ この場所へのリンク ]
【Excel2013 向け】 セルに日付入力する カレンダー コンテンツアプリ  ( 2013/ 2/16 追記 )

Office 2013 より 【コンテンツ アプリ】 という機能が提供されました。この機能を利用した
ツールを利用すると 【セルクリック⇒カレンダーフォーム表示⇒セルに日付入力】といった
操作を行なう事ができます。

詳細は、きぬあさ さん(きぬよ&あさみ さん)のHP/ブログを参照して下さい。
      初心者備忘録 : [Office用アプリ] カレンダーから日付入力
      初心者備忘録 : [Office用アプリ] カレンダーから日付を入力するコンテンツアプリ
      初心者備忘録 : [Office用アプリ] Officeストアでアプリが公開されました
      Microsoft Office_Store : カレンダーから日付入力


  ( この画像は、きぬあさ さんの ブログ:初心者備忘録 より借用 )



[ この場所へのリンク ]
【海外】 カレンダー コントロール クラス(脱 擬似コントロール配列)  ( 2013/ 3/28 追記 )

海外(多分 イタリア)のサイトで見つけた 「クラスモジュールを使ったカレンダーコントロール」です。
    Calendar Control for All Office versions - including Office 2010 64 bit

やはり、考える事は同じで MSCAL の代わりを作る上で、クラスでイベントをまとめる為に考えたようです。

擬似からの脱却」とは違って、サンプルを見ると 1クラス しかありませんので、どうやって動いているのか
判り辛いかもしれませんが、スタイルとしては、昔、moug で井川さんが当初採っていたスタイルと同じですね。

1クラスの中に、親と子 両方のプロシジャーを入れておき、親(1つ、UserFormから作成されるオブジェクト)
  から、子(日付ボタン)の分だけ自分自身のクローンを作成。

・ 子として動いているオブジェクトでは、[子]用のプロシジャーのみが動いている。
  ひとつひとつの日ボタンと 1:1 の対応になっているので、ボタンのイベントを WithEvents で受け取れます。
  そのタイミングで親のプロシジャーを呼び出している(親オブジェクトのプロパティ コール)。

・ 親として動いているオブジェクトでは、[親]用のプロシジャーのみが動いている。
  子からイベント発生の通知を受けると RaiseEvent でイベントを発行します。

・ 利用サイドの UserForm上では、[親] はひとつだけのオブジェクトなので、WithEvents でイベントを
  受取れます。

まぁ、近い将来、無駄に気付いて、親と子のクラス分離を考えるようになるでしょうね。
しかし、ようやく海外でも「脱 擬似コントロール配列」が出て来ましたね。初版は 2011年か。
ふふふ、σ(^_^) は2004年です ( ̄^ ̄)



[ この場所へのリンク ]
(参考)【Java Script によるカレンダー入力フォーム】  ( 2004/7/9 追記 , 2005/5/20 「昭和の日」 対応済 )
                                                                         ( 2011/3/20 FireFox 「TraceMonkey バグ」 対応済 )
                                                                         ( 2014/5/29 「山の日」 対応済 )

 All About Japan[ JavaScript ]高橋 登史朗さん )で紹介されている、
 JavaScriptによる日付入力ポップアップフォーム
「祝日表示(祝日判定ロジック JavaScript ) 他」の修正を加えたものです。
 
(補) この [ Java Script によるカレンダー入力 ] そのものは『高橋 登史朗 さん』の著作物です。
        利用許諾などの連絡を私のところへ頂く事がありますが、高橋さんの方へ確認して下さい
        私が追加した部分[ HolidayChk.js ]については、そのコード内に記載してあるように、コード内
        の Copyright 記述を含めたコメント を、そのまま残して頂ければ、それでOKです。


日付1〜3はテキストボックス内にカーソルを置くとフォームがポップアップします。
日付4は隣のボタンをクリックするとフォームがポップアップします。
使い方などの解説は[ All About Japan ]を参照して下さい。
  (レイヤー版)
    日付1:
    日付2:
    日付3:
    日付4:

  (サブウィンドウ版)
    日付5:
    日付6:

<< JavaScript コード >>
    2005/5/20 祝日判定コードを 「昭和の日」 対応で修正しました。
    2011/3/20 祝日判定コードを 「FireFox TraceMonkey バグ」 対応で 修正 しました。最新版を DL し直して差し替えて下さい。
              FireFox 3.5/3.6 のバグにより、祝日判定スクリプトが誤判定をする場合があります。なお、スクリプト自体に間違いは
              ありませんので、IE , Opera 等のFireFox以外のブラウザでは、修正前スクリプトであっても全く問題はありません
              この不具合の詳細、および FireFox のバグ対応状況 については [ FireFox_TMBug_Test.htm ] を参照してください。
              (補) この不具合は [ループ処理] と [switch ステートメント] の組み合わせで発現する(FireFox/TraceMonkey による
                    JavaScript の コンパイルミス) ものですが、幸いなことに、カレンダーを作成するための「1ヶ月分のループ(31回)」
                    程度では、この不具合は表面化しないようです。カレンダーフォームを表示してみれば判りますが、上記解説に
                    ある誤判定の日付に対しても、正しい祝日でカレンダーが作成されています。

    2014/5/29 祝日判定コードを 「山の日」 対応で修正しました。

    祝日判定コード       : HolidayChk.js (祝日改正(山の日)に関しては こちら 参照。)
    日付入力カレンダー (高橋さんのオリジナルに祝日強調表示の修正を加えてあります)
        レイヤー版 : calendarlay.js      サブウィンドウ版 : calendarsubwin.js
この3つのJavaScript ファイルを、ホームページ領域にダウンロードしておいて、次のようなHTMLを
記述すると、上記の入力ができます。
   (注) JavaScript ソース を見ると判りますが、レイヤー版/サブウィンドウ版ともに、「本日」を太字表示するように
          手直ししてあります。しかし、サブウィンドウ版では、Aタグのスタイル指定の関係で、Bタグが無効となり、
          太字表示にはなりません ( 2006/3/3 )。


 <HEAD>
   :
 <script src="HolidayChk.js" language="JavaScript"></script>
 <script src="calendarlay.js" language="JavaScript"></script>
 <script src="calendarsubwin.js" language="JavaScript"></script>
 </HEAD>
 <BODY>
   :
 <form name=calf1>
 日付1:<input name="e1" type="text"
              onFocus="wrtCalendarLay(this,event)"><br>
 日付2:<input name="e2" type="text"
              onFocus="wrtCalendarLay(this,event,'mm月dd日')"><br>
 日付3:<input name="e3" type="text"
              onFocus="wrtCalendarLay(this,event,'yyyy年mm月dd日(曜)')"><br><br>
 日付4:<input name="e4" type="text">
              <input type="button" value="入力用カレンダー"
                  onclick="wrtCalendarLay(this.form.e4,event)"><br>
 <br>
 (サブウィンドウ版)<br>
 日付5:<input name="e5" type="text" onFocus="wrtCalendar(this)"><br>
 日付6:<input name="e6" type="text">
              <input type="button" value="入力用カレンダー"
                  onclick="wrtCalendar(this.form.e6)"><br>

 </form>
   :
 </BODY>
 

 「何日目以降から入力可」をサポートするカスタマイズ版を利用される場合は下記を使って下さい。
    日付入力カレンダー : calendarlay2.js (入力有効日機能を追加した版に祝日強調表示の修正を加味)

 <script src="HolidayChk.js" language="JavaScript"></script>
 <script laguage="JavaScript">
    window.xDaysAfter = 7;    // (7日目以降が有効)
 </script>

 <script src="calendarlay2.js" language="JavaScript"></script>
 </HEAD>
 <BODY>
   :

  動作テストフォーム

 (注) 高橋さんの解説では[ window.xDaysAfter = 7; ]という風に書かれていますが、
      この書き方では私のPC(Win98SE IE5.5SP2,IE6SP1)で動作しませんでした(入力
      不可にならない)。しかし、他のブラウザ(Netscape, FireFox)では動作しました。
      window を省略して[ xDaysAfter = 7; ]と記述したらIEでも動作するようになりました。
 


[ この場所へのリンク ]
(参考)【Java Script によるカレンダー入力フォーム その2  - JKL.Calendar - 】  ( 2007/3/16 追記 )
                                                                         ( 2011/3/20 FireFox 「TraceMonkey バグ」 対応済 )
                                                                         ( 2014/5/29 「山の日」対応済 )

    川崎有亮さん作の[ JKL.CalendarMOMさんによる改良版)] に、安達さんが私の祝日判定
    コードを反映させた改良版を紹介しています。
    詳細は上記の川崎さん・MOMさん・安達さんのHPをご覧下さい。

    参照 : 祝日判定ロジック ( JavaScript ) , HolidayChk.js 
    2011/3/20 祝日判定コードを 「FireFox TraceMonkey バグ」 対応で 修正 しました。最新版を DL し直して差し替えて下さい。
              FireFox 3.5/3.6 のバグにより、祝日判定スクリプトが誤判定をする場合があります。なお、スクリプト自体に間違いは
              ありませんので、IE , Opera 等のFireFox以外のブラウザでは、修正前スクリプトであっても全く問題はありません
              この不具合の詳細、および FireFox のバグ対応状況 については [ FireFox_TMBug_Test.htm ] を参照してください。
              (補) この不具合は [ループ処理] と [switch ステートメント] の組み合わせで発現する(FireFox/TraceMonkey による
                    JavaScript の コンパイルミス) ものですが、幸いなことに、カレンダーを作成するための「1ヶ月分のループ(31回)」
                    程度では、この不具合は表面化しないようです。カレンダーフォームを表示してみれば判りますが、上記解説に
                    ある誤判定の日付に対しても、正しい祝日でカレンダーが作成されています。

    2014/5/29 祝日判定コードを 「山の日」 対応で修正しました。


(補) この [ JKL.Calendar ] そのものは 『 川崎 有亮 さん 』 他の方々の著作物です。
        利用許諾などの連絡を私のところへ頂く事がありますが、川崎さん他2名の方へ確認して下さい
        私の関与部分 [ HolidayChk.js ] については、そのコード内に記載してあるように、コード内
        の Copyright 記述を含めたコメント を、そのまま残して頂ければ、それでOKです。



    日付:  (TextBox をクリックすると JKL.Calendar フォームがポップアップします)




 Home   Back Page   Next Page

ロゴ(ゴールド)   ロゴ(ゴールド)

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