Microsoft Access 掲示板

指定月のカレンダーを表示できるようにしたい / 4

7 コメント
views
4
hiroton 2025/09/19 (金) 15:49:49 修正 2d761@f966d

ACCESSの仕様的に「日付」テキストボックスだけではどうしようもないかなーと思ってます
直接入力を禁止し、カレンダーからしか選べないような形であれば、入力用のテキストボックスを使ってどうにかなるかもしれません

入力用に「日付カレンダー」テキストボックス(非連結)を用意します。プロパティを「0cm」にし、「日付」テキストボックスの左端に重なるように設置して見た目上見えないようにします

以下、VBAを使って、「日付カレンダー」(見えないテキストボックス)で日付選択カレンダーを表示し、カレンダーの日付選択時に「日付」テキストボックスに値を設定するサンプルです。

Private Sub 日付_Enter()
    Me!日付カレンダー.SetFocus
End Sub

Private Sub 日付カレンダー_AfterUpdate()
    Me!日付 = Me!日付カレンダー
End Sub

Private Sub 日付カレンダー_Change()
'//カレンダーの日付をクリックしたときに発生するイベント
'//ここで、別なコントロールに移動してAfterUpdateを発生させる
    Me!次のコントロール.SetFocus
End Sub

Private Sub 日付カレンダー_Enter()
    Me!日付.TabStop = False
    If IsDate(Me!日付) Then
        Me!日付カレンダー = Me!日付
    Else
        If IsDate(Me!対象年 & "/" & Me!対象月 & "/1") Then
            Me!日付カレンダー = Me!対象年 & "/" & Me!対象月 & "/1"
        Else
            Me!日付カレンダー = Null
        End If
    End If
    DoCmd.RunCommand acCmdShowDatePicker
End Sub

Private Sub 日付カレンダー_LostFocus()
    Me!日付.TabStop = True
End Sub

※カレンダーで選択した値を反映させるために変更時('change')イベントを使ってコントロールの移動('setFocus')をしています。「Me!次のコントロール」は適切なものを指定してください

通報 ...