Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
  • ベストアンサー

ユーザーフォームのテキストボックスの書式設定について

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

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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

noa8998
質問者

お礼

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

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

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

noa8998
質問者

補足

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

すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

テキストボック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

noa8998
質問者

お礼

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

すると、全ての回答が全文表示されます。

関連するQ&A