すぐマク YNxv9g1730 Home | Search | Contents | Gallery | Introduction | Service | Support | What's New!
カレンダーコントロールのDayLengthプロパティの設定方法は?
Question 58.2 カレンダー・コントロール Previous Next
質問ですが、Excel2000で、カレンダーコントロールのプロパティの設定を下記のように行ないました
    Load CalendarForm
    With CalendarForm
        .StartUpPosition = 0                ' Manual
        .Top = 220
        .Left = 150
        .Calendar1.Daylength = 日本語
        .Calendar1.FirstDay = 日曜日
    End With
    CalendarForm.Show
    Cancel = True
    MsgBox (Str(ninzu) & "人(組)中" & vbCrLf & _
表示位置は正常になるのですが、
        .Calendar1.Daylength = 日本語
        .Calendar1.FirstDay = 日曜日
だけがうまく設定できません。プロパティをマニュアルで設定したとおりにしか表示できません。
それから、Excel2002ではDaylengthが”日本語”ではなく”システム”なっています。この場合の切り分けをどうしたらいいのでしょうか? よろしくお願いします。
Answer  Excel 2000以上 Copyright (C) 2003.2.18 Yoshioh Nagai
「うまく設定できません」とは、どうしたかったのに、どうなったのでしょうか? できれば具体的に書いていただきたいですね。
ですが文脈から推察すると、Excel2000で作成したものを Excel2002で表示すると、同じように表示されないと言うことのようですので、それで回答します。 なお、ご提示されたマクロには若干問題があるようですが、本題から外れるようなので置いておきます。

 カレンダーコントロール9.0               カレンダーコントロール10.0
カレンダーコントロール9.0 カレンダーコントロール10.0
左右の図は同じマクロで表示したものです。

相違点は、 曜日の文字数と、
横方向に展開する1週間を何曜日から始めるかです。
どうしてこうなるのでしょうか。

カレンダーコントロールは Accessのもので、Excelのバージョンとは本来は無関係です。しかし、MS Office XPとしてセットでインストールされることが多いので、Excelのバージョンアップと共に変わったと誤解しがちです。
カレンダーコントロールのバージョン9.0と 10.0の相違点および、注意事項などについては、拙著「Excel VBA マクロ組み方講座」で解説しています。よって、それをお読みいただきたいところですが、おそらく待てないでしょうから、ポイントとしてその一部を下表にまとめておきます。

DayLengthプロパティ
バージョン 10.0 バージョン 9.0
定数 表示 定数 表示
システム 0 日曜日,月曜日,… 日本語 0 日,月,…
システム(省略) 1 日,月,… 英語(1文字) 1 S,M,…
英語 2 Sunday,Monday,… 英語 2 Sun,Mon,…
英語(省略) 3 Sun,Mon,… . . .
あくまで私の推測ですが、今回のバージョンアップは改良途中のもののようです。すでに利用している者の立場から言えば、このように同じ定数の値でありながら機能が変わってしまうような変更は困惑してしまいます。 しかし、取り敢えずはどうしようもないので追従してマクロを修正するか、状況が許すならばカレンダーコントロールのバージョン10.0を削除して、9.0をインストールする手かと思います。

関連ページ
 ・ カレンダーコントロールをユーザーフォームで使うには
 ・ カレンダーコントロールとコンボボックスを連係させるには
参考ページ
 ・ [ACC2002]カレンダーコントロールのプロパティの設定値で異なる結果が表示
http://www.geocities.jp/happy_ngi/ Home | Contents | Gallery | Introduction | Service | Support | What's New!