Excelユーザーフォーム入門 | 第19回.テキストボックス数値編集 | Excelマクロのユーザーフォームの基礎、エクセルVBAの入門解説



最終更新日:2013-02-18

第19回.テキストボックス数値編集


数値専用のテキストボックスの作成です。

まずは、以下のように金額のテキストボックスを追加します。




オブジェクト名は、txt金額とします。

Private Sub txt金額_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  Select Case KeyCode
    Case vbKeyReturn, vbKeyBack, vbKeyDelete, vbKeyTab
    Case vbKey0, vbKey1, vbKey2, vbKey3, vbKey4, vbKey5, vbKey6, vbKey7, vbKey8, vbKey9
    Case vbKeyNumpad0, vbKeyNumpad1, vbKeyNumpad2, vbKeyNumpad3, vbKeyNumpad4, vbKeyNumpad5, vbKeyNumpad6, vbKeyNumpad7, vbKeyNumpad8, vbKeyNumpad9
    Case vbKeyLeft, vbKeyUp, vbKeyRight, vbKeyDown
    Case 188 '「,」カンマ
    Case Else
      KeyCode = 0
  End Select
End Sub

数字のみ入力可能なテキストボックスになります。

数字以外では、EnterキーやBackSpaceキー、そしてカンマ等々を入力できるようにしておきます。

数字キーは、

vbKey0〜vbKey9と、vbKeyNumpad0〜vbKeyNumpad9

この両方を入れるのを忘れないようにして下さい。

vbKeyNumpadは、テンキーからの入力になります。


次に、

カンマ編集
です。

まずは、テキストボックスに入った時点では、カンマを削除した状態にして、

テキストボックスを抜けた時にカンマ編集してみましょう。

Private Sub txt金額_Enter()
  Call setColor(Me.txt金額)
  If IsNumeric(Me.txt金額.Text) Then
    Me.txt金額.Text = Format(Me.txt金額.Text, "0")
  End If
End Sub

Private Sub txt金額_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  If Me.txt金額.Text = "" Then
    Exit Sub
  End If
  If IsNumeric(Me.txt金額.Text) Then
    Me.txt金額.Text = Format(Me.txt金額.Text, "#,##0")
  Else
    MsgBox "数値を入力して下さい。"
    Cancel = True
  End If
End Sub

Exitイベントでは、数値以外の場合は、抜けないようにしています。

Cancel = True

これで、テキストボックスを抜けないようにしています。

If Me.txt金額.Text = "" Then
  Exit Sub
End If

これが無いと、何も入力していない状態でもテキストボックスを出られなくなってしまいます。

入力必須項目であっても、ここは一旦は、未入力を許可しておい方が使い勝手が良いでしょう。

必須入力のチェックは、OKボタンが押された時点でチェックするようにすれば良いです。


別の方法で、数字を入力している途中で、カンマを自動挿入してみましょう。

電卓の数値入力のような感じになります。

Private Sub txt金額_Change()
  If IsNumeric(Me.txt金額.Text) Then
    Me.txt金額.Text = Format(Me.txt金額.Text, "#,##0")
  End If
End Sub

これで、数値を入力していくと、3桁ごとに自動でカンマが付くようになります。

ここは、好みで使い分ければ良いと思います。





同じテーマ「Excelユーザーフォーム入門」の記事

第11回.コンボボックス(ComboBox)の追加
第12回.リストボックス(ListBox)の追加
第13回.チェックボックス(CheckBox)の追加
第14回.オプションボタン(OptionButton)の追加
第15回.ここまでの整理
第16回.アクティブコントロールに色を付ける
第17回.Enterキーで次のコントロールに移動する
第18回.2段階コンボボックス
第20回.テキストボックスの各種イベント
第21回.ユーザーフォームの各種イベント

新着記事 ・・・新着記事一覧を見る

複数条件判定を行う時のコツ|ExcelマクロVBA技術解説(7月11日)
For Next の使い方いろいろ|VBA技術解説(6月14日)
VBAを定型文で覚えよう|ExcelマクロVBA技術解説(3月26日)
VBAスタンダード試験対策まとめ|MOS VBAエキスパート対策(3月16日)
ユーザーフォームとメニューの操作|MOS VBAエキスパート対策(3月14日)
ファイルの操作|MOS VBAエキスパート対策(3月14日)
ユーザーフォームの各種イベント|Excelユーザーフォーム(3月13日)
レジストリの操作|MOS VBAエキスパート対策(3月12日)
変数と配列|MOS VBAエキスパート対策(3月12日)
Colorプロパティの設定値一覧|VBA技術解説(3月12日)

アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.変数とデータ型(Dim)|ExcelマクロVBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.マクロって何?VBAって何?|ExcelマクロVBA入門
6.RangeとCellsの使い方|ExcelマクロVBA入門
7.とにかく書いて見よう(Sub,End Sub)|VBA入門
8.繰り返し処理(For Next)|ExcelマクロVBA入門
9.定数と型宣言文字(Const)|ExcelマクロVBA入門
10.マクロはどこに書くの(VBEの起動)|VBA入門



  • >
  • >
  • >
  • テキストボックス数値編集

  • このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。





    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。

    本文下部へ

    ↑ PAGE TOP