|
▼くやっち さん:
>フォームに年月日を手入力ができるテキストボックスを作りました。
>このテキストボックスをダブルクリックすることでカレンダーが表示され、更に日付をダブルクリックすることで、該当の日にちが入力できるようにしました。
>
>Private Sub カレンダー_DblClick()
> DoCmd.SelectObject acForm, "サービスフォーム", False
> Forms!サービスフォーム!受注日 = Me.カレンダー.Value
> DoCmd.Close acForm, "カレンダー"
>End Sub
カレンダーコントロールは別フォーム「カレンダー」に配置してあるのですね。
テキストボックスをダブルクリックで呼び出すということは、そのテキストボックスにフォーカスがあるということなので、カレンダーフォームが開くときに Screen.ActiveControl で取得出来ます。
カレンダーフォームのモジュールは下記のようになります。
Option Compare Database
Option Explicit
Dim ctl As Control
Private Sub Form_Load()
Set ctl = Screen.ActiveControl
If IsDate(ctl.Value) Then
Me.カレンダー.Value = CDate(ctl.Value)
Else
Me.カレンダー.Value = Date
End If
End Sub
Private Sub Calendar0_Click()
ctl = Me.カレンダー.Value
DoCmd.Close acForm, "カレンダー"
End Sub
テキストボックスに既に日付が入力されいるときは、カレンダーもその日付が選択された状態、
日付が入力されていないときは、今日の日付が選択される仕様にしています。
上記の仕様を汎用的な関数にしたサンプルが下記にありますので、ご参考に。
カレンダーコントロールを利用した日付入力汎用関数 - hatena chips
hatenachips.blog34.fc2.com/blog-entry-33.html
|
|