Microsoft Calendar Control 10.0 以降のバージョンでは、FirstDay プロパティの値が正しくありません
元の KB 番号: 826761
注:
この記事は、Microsoft Access データベース (.mdb) ファイルまたは Microsoft Access データベース (.accdb) ファイルに適用されます。 基本的なマクロ、コーディング、相互運用性のスキルが必要です。
現象
Microsoft Access では、予定表コントロールの初日に正しくない日が表示されます。 この問題は、Microsoft Calendar Control 10.0 以降のバージョンをフォームまたはレポートに挿入し、Microsoft Visual Basic for Applications (VBA) 組み込み定数を使用して予定表コントロールのプロパティを設定FirstDay
するときに発生します。
たとえば、予定表コントロールのプロパティを FirstDay
vbMonday または vbTuesday に設定します。 予定表コントロールのプロパティを FirstDay
vbTuesday に設定すると、予定表は水曜日を週の最初の日として使用します。
注:
以前のバージョンの予定表コントロールを使用する場合は、プロパティを FirstDay
正しく設定できます。
原因
この問題は、microsoft Visual Basic で定義されている日の組み込み定数 ( vbSunday や vbMonday など) が正しい日の値に関連付けられていないために発生します。
回避策
この問題を回避するには、次の手順を実行します。
日、VBA 組み込み定数、および正しい日の値と VBA 組み込み定数に関連付けられている数値の間の関連付けを決定します。 これを行うには、次の手順を実行します。
Access を開始します。
Northwind サンプル データベースを開きます。
[データベース] ウィンドウで、[オブジェクト] の [フォーム] をクリックします。
注:
Access 2007 で、[作成] タブをクリックし、[フォーム] グループの [フォーム デザイン] をクリックします。
右側のウィンドウで、[ デザイン] ビューで [フォームの作成] をダブルクリックします。
注:
Access 2007 で、この手順をスキップします。
[ 挿入 ] メニューの [ ActiveX コントロール] をクリックします。
注:
Access 2007 で、[デザイン] タブをクリックし、[コントロール] グループの [ActiveX コントロールの挿入] をクリックします。
[ActiveX コントロールの挿入] ダイアログ ボックスで、[ActiveX コントロールの選択] リスト ボックスから [予定表コントロール 10.0 以降] をクリックして選択し、[OK] をクリックします。
プロパティが次のように設定されているフォームにコマンド ボタンを追加します。
プロパティ 値 Name
testFD Caption
初日の変更 [ファイル] メニューで [保存] をクリックします。
注:
Access 2007 で、[ Microsoft Office] ボタンをクリックし、[ 保存] をクリックします。
[ 名前を付けて保存 ] ダイアログ ボックスの [ フォーム名 ] ボックスに「Form1」と入力し、[ OK] を クリックして Form1 フォームを保存します。
[表示] メニューの [コード] をクリックします。
注:
Access 2007 で、[デザイン] タブをクリックし、[ツール] グループの [コードの表示] をクリックします。
Visual Basic エディターで、次のコードを入力するか貼り付けます。
Option Compare Database Private Sub testFD_Click() Calendar0.FirstDay = vbTuesday End Sub
フォーム ビューで Form1 を開きます。
[ 初日の変更 ] ボタンをクリックします。
注:
予定表コントロールの最初の列が火曜日に設定されていない場合は、最初の列の日をメモします。
Visual Basic エディターで、[表示] メニューの [イミディエイト ウィンドウ] をクリックします。
[イミディエイト] ウィンドウで、「 ?vbTuesday」と入力し、Enter キーを押します。
数値に注目してください。
vbTuesday を vbMonday や vbWednesday などの他の VBA 組み込み定数に置き換えて、手順 j から手順 o を繰り返します。
次の表に、日、VBA 組み込み定数、および正しい日の値と VBA 組み込み定数に関連付けられている数値の間の関連付けを示します。
週の日 VBA 組み込み定数 関連付けられた数値 月曜日 vbSunday 1 火曜日 vbMonday 2 水曜日 vbTuesday 3 木曜日 vbWednesday 4 金曜日 vbThursday 5 土曜日 vbFriday 6 日曜日 vbSaturday 7
曜日に正しくマップされるグローバル カスタム列挙体を作成します。 これを行うには、次の手順を実行します。
[データベース] ウィンドウで、[オブジェクト] の下の [モジュール] をクリックします。
注:
Access 2007 で、[作成] タブをクリックし、[その他] グループの [マクロ] の下の矢印をクリックし、[モジュール] をクリックします。
[挿入] メニューの [モジュール] をクリックします。
注:
Access 2007 で、この手順をスキップします。
Visual Basic エディターに次のコードを入力または貼り付けます。
Option Explicit Public Enum nwFirstDay nwMonday = 1 nwTuesday = 2 nwWednesday = 3 nwThursday = 4 nwFriday = 5 nwSaturday = 6 nwSunday = 7 End Enum
注:
「週の日」列と、手順 1r の表の対応する "関連付けられた数値" 列に列挙体を作成します。
[モジュール] Day_Associationに名前を付けて保存します。
Visual Basic エディターを閉じます。
アプリケーションの VBA 組み込み定数を、手順 2 で説明されているカスタム列挙内の定数に置き換えます。
たとえば、元のコードが
Calendar0.FirstDay = vbTuesday
カスタム列挙を使用するようにコードを次のように変更します。
Calendar0.FirstDay = nwTuesday
アプリケーションを実行します。
詳細情報
VBA 組み込み定数は、システムのローカル情報に依存しません。 たとえば、ドイツ語でローカライズされたオペレーティング システムを持つコンピューターでは、週の最初の日は月曜日です。 コンピューター上の Monday に関連付けられている数値は常に 0 です。
Calendar Control 10.0 以降のバージョンは世界中の Microsoft ActiveX コントロールであるため、コンピューターの仕様に基づいて VBA 組み込み定数に関連付けられている数値を制御することはできません。 そのため、この記事の「現象」セクションに記載されている問題が発生します。
問題の再現手順
Access を開始します。
Northwind サンプル データベースを開きます。
[データベース] ウィンドウで、[オブジェクト] の [フォーム] をクリックします。
注:
Access 2007 で、[作成] タブをクリックし、[フォーム] グループの [フォーム デザイン] をクリックします。
右側のウィンドウで、[ デザイン] ビューで [フォームの作成] をダブルクリックします。
注:
Access 2007 で、この手順をスキップします。
[ 挿入 ] メニューの [ ActiveX コントロール] をクリックします。
注:
Access 2007 で、[デザイン] タブをクリックし、[コントロール] グループの [ActiveX コントロールの挿入] をクリックします。
[ActiveX コントロールの挿入] ダイアログ ボックスで、[ActiveX コントロールの選択] リスト ボックスから [予定表コントロール 10.0 以降] をクリックして選択し、[OK] をクリックします。
プロパティが次のように設定されているフォームにコマンド ボタンを追加します。
プロパティ 値 Name
testFD Caption
初日の変更 [表示] メニューの [コード] をクリックします。
注:
Access 2007 で、[デザイン] タブをクリックし、[ツール] グループの [コードの表示] をクリックします。
Visual Basic エディターで、次のコードを入力するか貼り付けます。
Option Compare Database Private Sub testFD_Click() Calendar0.FirstDay = vbTuesday End Sub
[ファイル] メニューで [保存] をクリックします。
注:
Access 2007 で、[ Microsoft Office] ボタンをクリックし、[ 名前を付けて保存] をクリックします。
[ 名前を付けて保存 ] ダイアログ ボックスで、[ フォーム名 ] ボックスに「Form1」と入力し、[ OK] を クリックして Form1 フォームを保存します。
フォーム ビューで Form1 を開きます。
[ 初日の変更 ] ボタンをクリックします。
予定表コントロールのプロパティを
FirstDay
vbTuesday に設定しますが、予定表は水曜日を週の最初の日として選択します。
関連情報
予定表コントロールと予定表コントロールのプロパティの詳細については、Mscal.hlp を開き、適切なトピックを検索します。 Mscal.hlp は、次のフォルダーにあります。
Microsoft Access 2002
インストール ドライブ: \Program Files\Microsoft Office\Office10
Microsoft Office Access 2003
インストール ドライブ: \Program Files\Microsoft Office\Office11
注:
インストール ドライブ は、インストール ドライブの名前のプレースホルダーです。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示