Excelユーザーフォーム入門
第19回.テキストボックス数値編集

Excelマクロのユーザーフォームの基礎、エクセルVBAの入門解説
最終更新日:2013-02-18

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


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


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


Excelサンプル画像

オブジェクト名は、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ユーザーフォーム入門」の記事

コンボボックス(ComboBox)の追加
リストボックス(ListBox)の追加
チェックボックス(CheckBox)の追加
オプションボタン(OptionButton)の追加
ここまでの整理
アクティブコントロールに色を付ける
Enterキーで次のコントロールに移動する
2段階コンボボックス
テキストボックス数値編集
テキストボックスの各種イベント
ユーザーフォームの各種イベント

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

「VBAによる解析シリーズその2 カッコ」をやってみた|エクセル(5月21日)
VBA+SeleniumBasicで検索順位チェッカー作成|VBA技術解説(5月18日)
テーブル操作のVBAコード(ListObject)|VBA入門(5月12日)
テーブル操作の概要(ListObject)|VBA入門(5月12日)
VBAのスクレイピングを簡単楽にしてくれるSelenium|VBA技術解説(5月6日)
Excelワークシート関数一覧(2010以降)|VBAリファレンス(4月22日)
クラスとCallByNameとポリモーフィズム(多態性)|VBA技術解説(4月6日)
VBAでのタイマー処理(SetTimer,OnTime)|VBA技術解説(4月3日)
クラスとイベントとマルチプロセス並列処理|VBA技術解説(4月2日)
エクセルの日付と時刻のまとめ|エクセル関数超技(3月6日)

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

1.ひらがな⇔カタカナの変換|エクセル基本操作
2.最終行の取得(End,Rows.Count)|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.RangeとCellsの使い方|ExcelマクロVBA入門
6.変数とデータ型(Dim)|ExcelマクロVBA入門
7.マクロって何?VBAって何?|ExcelマクロVBA入門
8.繰り返し処理(For Next)|ExcelマクロVBA入門
9.とにかく書いて見よう(Sub,End Sub)|VBA入門
10.セルに文字を入れるとは(Range,Value)|VBA入門



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

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


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






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

    本文下部へ