人生のプチ美学を教えてください!!

VBAについて教えて下さい!

今、UserFormに「TextBox1」,「TextBox2」,「TextBox3」,「CommandButton1」があります。

「TextBox1」には自動的に年"yy"(上書き修正も出来るようにする)
「TextBox2」には自動的に月"mm"(上書き修正も出来るようにする)
「TextBox3」には自動的に日"dd"(上書き修正も出来るようにする)

が入るようにして

「CommandButton1」をクリックすることによりExcelの「A1」に"yy/mm/dd"
と言う形で自動的に入力することは出来ないでしょうか?

また、その時にありえない日にちが入力された時にエラーが出て、「TextBox3」にカーソルが戻るようなことは出来ないでしょうか?

A 回答 (2件)

Private Sub CommandButton1_Click()


If IsDate(TextBox1 & "/" & TextBox2 & "/" & TextBox3) = False Then
TextBox3.SetFocus
Else
Range("A1") = "'" & TextBox1 & "/" & TextBox2 & "/" & TextBox3
End If
End Sub

Private Sub UserForm_Activate()
TextBox1 = Format$(Now(), "yy")
TextBox2 = Format$(Now(), "mm")
TextBox3 = Format$(Now(), "dd")
End Sub
    • good
    • 1
この回答へのお礼

出来ました!有難うございます!

お礼日時:2008/02/13 22:14

まず、自動的に年月日を取得し、それぞれのテキストボックスへ入るようにするには、フォームのイニシャライズ時に下記のように行えばよいかと思います。



Private Sub UserForm_Initialize()
TextBox1.Text = Format(Now, "YY")
TextBox2.Text = Format(Now, "MM")
TextBox3.Text = Format(Now, "DD")
End Sub

Nowは現在日時を示しており、Format関数を使用することで、年、月、日を取り出しています。このときYYやMM,DDとすることで2桁で値を取得することができます。

つぎに、ボタンが押されたときの処理ですが
Private Sub CommandButton1_Click()
Cells(1, 1) = Format(TextBox1.Text & "/" & TextBox2.Text & "/" & TextBox3.Text, "yy/mm/dd")
End Sub

といった感じでしょうか

「あり得ない日にちが入力された時にエラーが出て」とありますが、何を持ってあり得ないとするのでしょうか?
たとえば1900年以前はあり得ないとする等...
(この辺はご自分でどう処理したいかを考えコードに置き換えてみてください。その上でわからなければ、どういった処理を作成しようとしてどこで躓いたのかを教えてください)

最後に、TextBox3へカーソルを戻す方法ですが
Textox3.SetFocus
と記述することで実現可能です。
    • good
    • 1
この回答へのお礼

出来きました。
ありえない日付ですが、「08/02/30」とか「08/03/32」と手入力したときに注意を促すコメントがでればと思ったのですが、とりあえず上記の回答で何とかなりそうです。
有難うございました。

お礼日時:2008/02/13 22:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A