- ベストアンサー
VBA Excelでの日付入力と修正について
- VBA Excelを使用して、UserForm内のTextBoxに日付を入力する方法について説明します。
- また、間違ったデータを修正する際に、Excelに登録している日付を自動的にTextBoxに入力する方法もご紹介します。
- 詳細は以下の質問文章をご覧ください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 >【TextBox1】 yy >【TextBox2】 mm >【TextBox3】 dd > >の形で戻すことは可能ですか? もう少し、ご質問に対して、気をつけていれば良かったでした。すみませんね。そのご質問どおりに考えると、 If IsDate(Cells(i, 2).Text) Then myDate = Cells(i, 2).Value2 TextBox1.Value = Format$(myDate, "yy") TextBox2.Value = Format$(myDate, "mm") TextBox3.Value = Format$(myDate, "dd") End If こんな風にするのが、一番忠実のような気がしました。たぶん、ご存知ですよね。 なお、Format 関数の、$ が、付いているのは、テキスト出力しているということです。そのままにすると、Variant 出力になりますが、あまり、今の時代は、付いていても、付いていなくても、大きな違いはないと思います。
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 >【TextBox1~3】 こちらに戻すということですね。 >TextBox】に呼び出したいNo.を入力して【CommandButton2】(呼び出し)をクリックするとそのNo.の行のデータが【TextBox】・【ComboBox】・【ListBox】にデータが反映される(戻る?)ようにしているのですが、 私は、ここの仕組みがどうされているのか分からなかったのですが、まあ、それはそのままにしておきます。 【TextBox】に呼び出したいNo. のTextbox を TextBox4 とします。 Private Sub CommandButton1_Click() に以下のように加えたらいかがですか? Cells(i, 2).Value2 , Value2 でなくても、Value だけでもよいです。 i = TextBox4.Value + 9 は、行の呼び出し Dim myDate As Date Dim i As Long If Val(TextBox4.Value) > 0 Then i = TextBox4.Value + 9 If IsDate(Cells(i, 2).Text) Then myDate = Cells(i, 2).Value2 TextBox1.Value = Year(myDate) TextBox2.Value = Month(myDate) TextBox3.Value = Day(myDate) End If End If なお、お礼欄を使えば、こちらに直接連絡が入りますが、補足欄ですと、回答が遅くなります。予めご了解ください。
お礼
有難うございます。 TextBoxに反映(戻す)出来ました。 ただ、もう1つ説明不足だったのですが、上記の場合TextBoxに戻した場合 【TextBox1】 yyyy 【TextBox2】 m 【TextBox3】 d になりますが、これを 【TextBox1】 yy 【TextBox2】 mm 【TextBox3】 dd の形で戻すことは可能ですか? それと、丁寧にお礼欄の使い方(?)まで教えて下さいまして有難うございました!
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 同じテキストボックスを使いながら、前回の話とは違うのですね。 >自動的に入力することは出来るでしょうか? 質問の中の文章では、不十分です。 TextBox1 ~3 にセルから入れるのは、出力の反対のことをすればよいはずです。 >ある日、データを間違えて入力 ある日とはいつですか?任意のセルのことですか? 修正するセルをどのように決定するのでしょうか? 一体、どこのセルなのでしょうか? 起動時に登録で入れた部分でしょうか? 直すのは、UserForm をモードレスにして、直接、手書きのほうが早かったりするのではないでしょうか?
補足
早速の回答有難うございました。 説明不足で申し訳ありませんでした。 UserFormには、日付の【TextBox1~3】以外にも、入力が出来る【TextBox】や【ComboBox】・【ListBox】があります。 これらを、入力して【CommandButton1】(登録)をクリックすることにより下記の様にExcelに反映させるようにしています。(登録する毎に最終行に自動的にNo.を入力して反映します。) A B C D ・・・・ ・ ・ 9 No. 日付 商品名 価格 ・・・・・ 10 1 2008/03/03 ○○○ ○円 11 2 2008/03/03 ××× ×円 12 3 2008/03/03 △△△ △円 13 4 2008/03/03 ■■■ ■円 14 5 2008/03/03 ◎◎◎ ◎円 15 6 2008/03/03 □□□ □円 16 7 2008/03/03 ▼▼▼ ▼円 ・ ・ ・ 上記の様なデータを作成していきましたが、「入力間違い」や「修正」が出てきた場合、UserFormにある【TextBox】に呼び出したいNo.を入力して【CommandButton2】(呼び出し)をクリックするとそのNo.の行のデータが【TextBox】・【ComboBox】・【ListBox】にデータが反映される(戻る?)ようにしているのですが、日付だけはどのようにしたらいいか分かりません。 日付は、Excelの B列に yyyy/mm/ddの形式で入っています。 UserFormに反映させる方法があれば教えて頂きたいのですが・・・
お礼
有難うございました。 解決しました。 しかし、よく直ぐに分かりますね。とても助かりました。 自分なんか、参考書を広げて悩んだあげくここで聞く始末なので・・・ もう少し、色々勉強します。