[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『テキストボックスで日付入力』(はせぴぃ)
Excel2003にて
VBAのフォーム内のTextboxに日付を入力したいのですが、 カレンダーコントロールをどのように使用すれば よろしいのでしょうか?
希望としてはTextbox内にデフォルトで入力日が表示され、 (yyyy/mm/dd)Textboxをクリックするとカレンダーが表示され、 カレンダー内の日付をクリックすると、 Textbox内の日付が変わるようにしたいです。
別にカレンダー専用のフォームを作成しなくてはいけないのでしょうか?
>VBAのフォーム内のTextboxに日付を入力したい ユーザーフォームのテキストボックスに日付を入力したい ということですね!! 方法は、同じユーザーフォーム内に非表示でカレンダーコントロールを配置しておいて 必要なときに表示させる という方法。
>別にカレンダー専用のフォームを作成しなくてはいけないのでしょうか? この二つが考えられますねえ・・・。
私なら、カレンダー専用のユーザーフォームを作成 にすると思います。
そのように作っておけば、別の機会に再利用できそうですからね!!
別のユーザーフォーム(Userform1)には、 カレンダーコントロールだけを配置します。
オブジェクト名 UserForm1
機能 カレンダーコントロールを使って日付を管理する。
メソッド show ----- ユーザーフォームを表示し、カレンダーを表示する
プロパティ value ---- 指定された日付を格納します。 初期設定日としては、Showメソッドの前に 指定します。省略すると、 本日の日付が設定されます 日付の確定は、ダブルクリックで確定してください ユーザーフォームが閉じます。 ユーザーフォームの閉じるボタンをクリックすると ユーザーフォームが閉じますが、valueプロパティ には、Emptyが設定されます 使用例
Sub test() Load UserForm1 With UserForm1 .value = Date - 5 '初期値として、本日より、5日前を指定 .Show 'カレンダーフォーム表示 If Not IsEmpty(.value) Then '日付が指定された? MsgBox Format(.value, "yyyy/m/d") End If End With Unload UserForm1 'カレンダーフォームを退避 End Sub
上記のコードが正常に作動するようなUserform1を考えて見てください
ichinose
ichinoseさん、ありがとうございます。
さっそく、下記のように試してみました。
Sub Private Sub TextBox1_Change()
’
Load UserForm1 With UserForm1 .value = Date - 5 .Show If Not IsEmpty(.value) Then MsgBox Format(.value, "yyyy/mm/dd") End If End With Unload UserForm1 ’ End Sub
しかし、うまくいきません。初期値(現在の日付)も表示されません。
私が勘違いしているのでしょうか?
また、カレンダーコントロールを参照していない(できない)PCでは
こちらはうまく作動しないでしょうか?
(はせぴぃ)
>カレンダーコントロールを参照していない(できない)PCではこちらはうまく作動しないでしょうか?
カレンダーコントロールは、Excelの付属コントロールではなく、Accessに付属している コントロールですから、 Accessのない環境では通常は、コントロール自体がインストールされていません。 コントロール自体がなければ、大前提がひっくり返ります。
作動しませんし、 Accessのない環境にこのカレンダーコントロールだけインストールするのは、 ライセンス違反ですよ!!
よって、Accessのない環境では、カレンダーコントロールは使えません。
>私が勘違いしているのでしょうか? はい、勘違いしています。 私が投稿したようなコードで作動するような仕様のUserForm1を 作成してみてください。 と申し上げただけでUserForm1に関しては、 ご自分で作成するのですよ!!
これもライセンスがあればの話ですが、 カレンダーコントロールには、
Private Sub Calendar1_DblClick()
End Sub
ダブルクリックすると、イベントが発生しますから、上記のプロシジャーに ダブルクリック時に、日付が取得できるようなコードを作成するのですよ!!
この辺りの知識がないのなら、少し研究が必要です。
また、UserForm1の閉じるボタンクリック時の処理は、 Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
End Sub
というイベントプロシジャー内にコードを作成します。
これもこれだけで作動するわけではないですよ、中にご自分で仕様にあうような コードを作成するのですよ!!
日付を渡す変数は、このUserForm1のモジュールに
public value as variant
と宣言して運用できるように考えてください
ichinose
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.