ms_access_フォームに_カレンダーのビュー-CalenderView

ms accessでテーブルを作成したとき、

日付型のフィールドを追加すれば、


テーブルのオブジェクトを開いてその日付型の箇所に

値を入力しようとすると、


カレンダーのビューが表示されて、入力がしやすくなります。


一方で、そのテーブルに関連付けたフォームを作成し、

画面上部の add existing fieldsから

テーブルのフィールドを追加すると、


その日付型の入力欄はテキストボックスになっているのですが、


これを別にボタンを追加してでもいいので、

そのボタンを押したときに、カレンダーのビューが表示されて、

そのカレンダー内の日付を押すと、


ウィザードで追加したテキストボックスにその日付が表示されるようにするには、

まず、カレンダーのビューを作成しないといけないのでしょうか?


それとも accessのフォームのUI要素を追加できる、

画面上部のところから追加できるのでしょうか?





Microsoft Access のフォームで、ボタンを押したときにカレンダーを表示し、

選択した日付をテキストボックスに反映させる方法はいくつかあります。  


## **方法 1: 

テキストボックスのプロパティで「日付ピッカー」を有効にする(簡単)**

  

Access のテキストボックスには、

日付型のフィールドに対応する **「日付ピッカー」** という機能があり、

これを有効にするとカレンダーを表示できます。  


### **手順**


1. **フォームをデザインビューで開く**


2. **日付入力用のテキストボックスを選択**


3. **プロパティシートを開く(F4キーを押す)**


4. 「書式」タブの「日付ピッカーの表示」プロパティを `はい` にする  


   → これで、ユーザーがテキストボックスをクリックすると

カレンダーが表示されるようになります。


---


## **方法 2: カレンダーコントロール

(ActiveX コントロール)を使う

(カスタム実装)**


もし **「ボタンを押したときにカレンダーを表示する」** 

という動作を実装したい場合、

Access には ActiveX のカレンダーコントロールを追加する方法があります。



### **手順**


1. **フォームをデザインビューで開く**


2. **「デザイン」タブ → 「ActiveX コントロール」ボタンをクリック**


3. **「Microsoft Date and Time Picker Control」

または「Microsoft Calendar Control」を選択して追加**


4. **フォームにボタンを追加し、

そのクリックイベントに以下のような VBA コードを記述**



```vba


Private Sub btnShowCalendar_Click()

    Me.CalendarControl.Visible = True

End Sub


Private Sub CalendarControl_Click()

    Me.txtDateField.Value = Me.CalendarControl.Value

    Me.CalendarControl.Visible = False

End Sub


```


---


## **方法 3: 別のフォームでカレンダーを表示する**


もう一つの方法として、カレンダーを **別フォーム** で作成し、

ボタンを押すとそのフォームを開く方法もあります。


### **手順**


1. **「日付選択用のカレンダー」を作成する新しいフォーム

(例: `frmCalendar`)を作成**


2. **カレンダーコントロール(ActiveXまたはカスタムUI)を配置**


3. **元のフォームのボタンのクリックイベントで、カレンダーを開くVBAを記述**



```vba

Private Sub btnOpenCalendar_Click()


    DoCmd.OpenForm "frmCalendar", , , , , acDialog

End Sub

```


4. **カレンダー側の「日付選択」ボタンで、

元のフォームのテキストボックスに値を渡す**


```vba


Private Sub btnSelectDate_Click()


    Forms!frmMain.txtDateField.Value = Me.CalendarControl.Value

    DoCmd.Close acForm, "frmCalendar"

End Sub


```


---


### **どの方法が良いか?**


- **「簡単にカレンダーを表示したい」**

→ **方法1(テキストボックスのプロパティを変更)** 



- **「ボタンでカレンダーを出したい」** 

→ **方法2(ActiveXカレンダーコントロール)**  


- **「カスタムカレンダーを使いたい」**

→ **方法3(別フォームでカレンダーを開く)**  



方法1が最も簡単なので、まずは試してみて、

それで十分ならそれを使うのがおすすめです。






コメント