アプリ版:「スタンプのみでお礼する」機能のリリースについて

ユーザーフォームのテキストボックスの書式設定について
TextBox1に金額、TextBox2に日付を入力し、Sheet1に転記するような
フォームを作っています。
TextBox1には、
Private Sub TextBox1_Change()
y = TextBox1.Text
TextBox1.Text = Format$(CLng(y), "#,##0")
End Sub
としています。
TextBox2には、書式をH○○.○.○という設定にしたいのですが、
どのようにしたらよいでしょうか。

A 回答 (3件)

返事が遅くなりました。

時間が経った場合に、補足側にコメントを付けられても気がつかないことがあります。

>Enterをいれず、マウスでTTextBox1からextBox2へと移動した場合はどうなるのでしょうか?TextBox2_Changeでしょうか?

もちろん、そういう設定もありますが、少し困った質問ですね。もともと、Enter を入れて、入力値を確定するという意味で、Enter を入れるという意味になるはずです。タブで次のテキストボックスに移動するというなら、以下のようになりますが、そうでない場合は、別の方法になります。[タブで移動する場合]と[マウスで移動する場合を含む]は、共有しません。

''//タブで移動する場合
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 If KeyCode() <> 13 And KeyCode <> 9 Then Exit Sub
 If IsNumeric(TextBox1.Text) Then
  TextBox1.Text = Format(TextBox1.Text, "#,##0")
 End If
End Sub
Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 If KeyCode() <> 13 And KeyCode <> 9 Then Exit Sub
 If IsDate(TextBox2.Text) Then
  If Abs(Year(Date) - Year(CDate(TextBox2.Text))) < 20 Then '20年の差がある時は無視
   TextBox2.Text = Format(CDate(TextBox2.Text), "GEE.M.D")
  End If
 End If
End Sub


''//マウスだけで移動する場合を含む
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
 Call ChangeFormat(TextBox1)
End Sub
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
 Call ChangeFormat(TextBox2)
End Sub

Sub ChangeFormat(objTxt As Object)
 If IsNumeric(objTxt.Text) Then
  objTxt.Text = Format(objTxt.Text, "#,##0")
 ElseIf IsDate(TextBox2.Text) Then
  If Abs(Year(Date) - Year(CDate(objTxt.Text))) < 20 Then '20年の差がある時は無視
   objTxt.Text = Format(CDate(objTxt.Text), "GEE.M.D")
  End If
 End If
End Sub
    • good
    • 0
この回答へのお礼

補足にまで答えてくださりありがとうございます。
お礼遅くなり、大変申し訳ありません。

お礼日時:2010/11/16 16:44

Enter を入れると変化するようにしました。



Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 If KeyCode() <> 13 Then Exit Sub
 If IsNumeric(TextBox1.Text) Then
  TextBox1.Text = Format(TextBox1.Text, "#,##0")
 End If
End Sub
Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 If KeyCode() <> 13 Then Exit Sub
 If IsDate(TextBox2.Text) Then
  If Abs(Year(Date) - Year(CDate(TextBox2.Text))) < 20 Then '20年の差がある時は無視
   TextBox2.Text = Format(CDate(TextBox2.Text), "GEE.M.D")
  End If
 End If
End Sub

この回答への補足

Enterをいれず、マウスでTTextBox1からextBox2へと移動した場合はどうなるのでしょうか?TextBox2_Changeでしょうか?

補足日時:2010/10/15 16:11
    • good
    • 0

テキストボック1には123456などと、またテキストボックス2には2010/10/12などと入力した後でユーザーフォームをクリックすることで表示形式が変わるようにします。



Private Sub UserForm_Click()
y = TextBox1.Text
TextBox1.Text = Format(y, "#,##0")
x = TextBox2.Text
TextBox2.Text = Format(x, "ge.m.d")
End Sub
    • good
    • 0
この回答へのお礼

さっそくにありがとうございます。

お礼日時:2010/11/16 16:46

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