第19回.数値専用のテキストボックス
ユーザーフォーム入門として基礎から解説します。
数値専用のテキストボックスの作成です。
数字以外は入力出来ないテキストボックスを作成します。
数値専用のテキストボックスの追加
KeyDownイベントで数値のみに限定
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は、テンキーからの入力になります。
Keycode 定数 一覧
数値専用テキストボックスをカンマ編集
テキストボックスを抜けた時にカンマ編集してみましょう。
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
これで、テキストボックスを抜けないようにしています。
Exit Sub
End If
これが無いと、何も入力していない状態でもテキストボックスを出られなくなってしまいます。
入力必須項目であっても、ここは一旦は、未入力を許可しておい方が使い勝手が良いでしょう。
必須入力のチェックは、OKボタンが押された時点でチェックするようにしたほうが良いです。
Changeイベントで電卓風に
電卓の数値入力のような感じになります。
Private Sub txt金額_Change()
If IsNumeric(Me.txt金額.Text) Then
Me.txt金額.Text = Format(Me.txt金額.Text, "#,##0")
End If
End Sub
これで、数値を入力していくと、3桁ごとに自動でカンマが付くようになります。
ここは、好みで使い分ければ良いと思います。
イベントの使い方によって、いろいろな表現方法ができますので、工夫していろいろ試してみてください。
同じテーマ「ユーザーフォーム入門」の記事
第20回.テキストボックスの各種イベント
新着記事NEW ・・・新着記事一覧を見る
TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.繰り返し処理(For Next)|VBA入門
4.変数宣言のDimとデータ型|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.メッセージボックス(MsgBox関数)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.ブック・シートの選択(Select,Activate)|VBA入門
10.条件分岐(Select Case)|VBA入門
- ホーム
- マクロVBA応用編
- ユーザーフォーム入門
- 数値専用のテキストボックス
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。