Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


978 / 9994 ←次へ | 前へ→

【12319】Re:カレンダーコントロールを複数のテキストボックスで使用
回答  hatena  - 13/5/25(土) 8:23 -

引用なし
パスワード
   ▼くやっち さん:
>フォームに年月日を手入力ができるテキストボックスを作りました。
>このテキストボックスをダブルクリックすることでカレンダーが表示され、更に日付をダブルクリックすることで、該当の日にちが入力できるようにしました。
>
>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
563 hits

【12316】カレンダーコントロールを複数のテキストボックスで使用 くやっち 13/5/22(水) 11:07 質問[未読]
【12317】Re:カレンダーコントロールを複数のテキス... かるびの 13/5/23(木) 1:39 回答[未読]
【12318】Re:カレンダーコントロールを複数のテキス... くやっち 13/5/23(木) 23:52 お礼[未読]
【12319】Re:カレンダーコントロールを複数のテキス... hatena 13/5/25(土) 8:23 回答[未読]
【12320】Re:カレンダーコントロールを複数のテキス... くやっち 13/5/27(月) 16:01 お礼[未読]

978 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078191
(SS)C-BOARD v3.8 is Free