質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

3回答

43931閲覧

入力フォームで、テキストボックスに今日の日付が入っているようにしたい

jimunomado

総合スコア19

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2019/01/24 00:57

前提・実現したいこと

入力フォームに、日付を入力するテキストボックスがあります。
このテキストボックスにはデフォルトで今日の日付が入っているようにしたいのです。

作成中の入力フォーム

発生している問題・エラーメッセージ

テキストボックスに今日の日付が入りません。

該当のソースコード

VBA

1Private Sub UserForm1_Initialize() 2 txtDate.Text = Date 3 txtDate.Format = "Long Date" 4End Sub

試したこと

以前も別の入力フォームを作ったときに、同様の実装をしているのですが、その際は

VBA

1txtDate.Text = Format(Date, "YYYY/MM/DD")

で実装できているので、このようにもしてみましたが、だめでした。

補足情報

Excel2010、Win7 64bit版で操作しています。
初心者ですので初歩的なところで躓いている気がしますが、どうぞ皆様ご教示くださいませ・・・。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

firedfly

2019/01/24 01:17 編集

どううまくいかないのか書いていただけると幸いです。 (〇〇というエラーが起きる、ユーザーフォームは表示されるがなにも入らないなど)
jimunomado

2019/01/24 01:17

記載が足らず失礼いたしました。上記コードを入力しても、テキストボックスの中に今日の日付が自動的に入ってくれないのです。入らないだけで入力はできる状態です。
firedfly

2019/01/24 01:17

了解です。回答の方法を試してみてください。
guest

回答3

0

解決済みですが、前回の質問でも同じようなところで躓いていたようですので補足させていただきます。

イメージ説明

VBEditor画面でフォームのコードを表示すると、上図①のドロップダウンリストに「フォームに含まれるコントロールの一覧」が表示されます。
そして②のドロップダウンリストには、①で選択したコントロールで使用可能な「イベントの一覧」が表示されます。

例えば、フォームの初期化イベントを作成したい場合は①でUserForm、②でInitializeを選択します。
例えば、テキスト1にフォーカスが当たった時の処理を作成したい場合は、①でTextbox1、②でEnterを選択します。

こうすると、そのイベントが作成済みならそのコードが表示されますし、なければ自動で空のイベント関数を作成してくれます。

提示いただいたコードに関して

余談ではありますが提示いただいたコードについても少しアドバイスさせて下さい。

まず、VBAのtextboxにフォーマットプロパティは存在しません。
このためtxtDate.Format = "Long Date"という記述はエラーになるかと思います。

その他のコードで日付が入らないのは、イベント関数名が正しくなかったからということで解決済みかと思いますが、型の意識が少し薄いように思いました。

Private Sub UserForm_Initialize() Me.TextBox1.Value = Date 'この1行だけでも日付が表示されます。日付の表示形式はシステム設定依存になると思います。 Me.TextBox1.Text = Date 'この1行だけでも日付が表示されますが、Date型の値をString型のプロパティに暗黙変換して代入しているのでお作法的にはイマイチです。 Me.TextBox1.Text = Format(Date, "YYYY/MM/DD") 'この1行だけでも日付が表示されます。型の暗黙変換を回避するため明示的にDate型⇒String型変換を行っています。 End Sub

上記のとおりFormat関数で明示的に文字列型にしてからTextプロパティに代入するのが一番確実です。

参考になれば幸いです。

投稿2019/01/24 01:57

編集2019/01/24 02:03
jawa

総合スコア3013

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jawa

2019/01/24 01:59

イベント関数の作成方法についてはfiredflyさんの参考リンクで紹介済みのようでした。 重複した内容になってしまいすみません。
jimunomado

2019/01/24 08:08

わかりやすい解説をありがとうございます!ご指摘の通りで、型ほかの意識が薄いです、、、。(だから初歩的なところで躓くのですよね(^_^;))
jawa

2019/01/24 08:41

初心者さんですので、最初はそんなものだと思いますし、最初から何でもできてしまう方が問題解決能力が育たないような気がします。 こうやって最初のうちにちゃんと躓いて、躓いた原因を考えて、苦労した結果が経験になっていきますので、これからもがんばって躓いてください(^-^)b
jimunomado

2019/01/24 11:38

有難うございますm(_ _)m 頑張って躓いて、また皆様のお世話になります……( ;∀;)
guest

0

ベストアンサー

フォームの名前は、オブジェクト名にかかわらず
UserForm のようでした。

Private Sub UserForm1_Initialize()         ↓ Private Sub UserForm_Initialize()

投稿2019/01/24 01:17

torisan

総合スコア678

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jimunomado

2019/01/24 01:31

ありがとうございました!こちらの回答で間違いを把握できましたので、こちらをベストアンサーとさせていただきました。
guest

0

こんにちは。

UserFormのコードはUserFormごとに分かれていて
初期化イベントはUserForm名に関係なく**UserForm_Initialize()**のようです。
慣れるまでは参考リンクの方法でエディタから挿入するといいですね。

Python

1Private Sub UserForm_Initialize() 2 txtDate.Text = Date 3End Sub

参考:ユーザーフォームのイベント - Excel VBA

投稿2019/01/24 01:01

編集2019/01/24 01:30
firedfly

総合スコア1131

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jimunomado

2019/01/24 01:30

初期化イベントの名前はこうだったのですね><!ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問