|
|
| Excel VBA Macro ・ テキストボックス・コントロール ・ FAQ |
|
テキストボックスで数値を3桁区切りにするには?
|
|
|
|
Question 25.1 |
|
 |
 |
|
|
VBAのフォーム上で数値を 3桁区切りにしたい場合は、どうすればよろしいのでしょうか? Excel2000を使っています。
まだVBAを始めたばかりなので、質問自体が間違っていたら、お許し下さい。
|
|
Answer |
Copyright (C) 2000.2.17 永井善王 |
|
|
フォームとは、@ユーザーフォームのことでしょうか。それとも[データ]メニューにある Aデータ入力用の[フォーム]のことでしょうか?
もしもAのことでしたら、申し訳ないですが私にはわかりません。
また、「数値を3桁区切りにする」とは、(A) 3桁ごとにコンマを挿入して編集する ことなのか、或いは、
パソコンにソフトウェアをインストールするときに、しばしば見かけるCDキーの入力画面(左図)のように、
(B) 3桁ごとに区切られた入力画面 のことでしょうか?
もしも、このCDキーの入力画面イメージで良いのでしたら、こちら を参考にしてください。
それでは、ユーザーフォームのテキストボックスで入力された数値を、(A) 3桁ごとにコンマを挿入して編集する 方法を考えてみましょう。

この方法についても私は知りませんので、左図のとおりユーザーフォームにテキストボックスを設けて、
試行錯誤してみます。
TextBox1が「会員avでコンマなし、
TextBox2が「権利金」で金額ですからコンマありにしましょう。(左図のコンマはキーボードから入力しました)
テキストボックスのプロパティは多数あって、きめ細かい設定が可能ですが、コンマ編集してくれるプロパティは見当たりません。
よって自分で、テキストボックスのデータが変更されたときに発生するイベントを利用して、マクロを組むことになるかと思います。
では早速、組んでみましょう。
1. データが変更されたときに発生するイベントは、BeforeUpdateイベントで、次のとおりです。
Private Sub TextBox2_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
2. テキストボックスに入力された値を取り出すためのマクロは、
入力値 = TextBox2.Value
3. コンマ編集のマクロは、Format関数を使って、
編集値 = Format(入力値, "###,###")
4. 編集後の値をテキストボックスに設定するマクロは、次のように書けばよいでしょう。
TextBox2.Value = 編集値
まとめると下記のようになります。そして、これをユーザーフォームのコードに記入しておきます。
'=========================================================================================
Private Sub TextBox2_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
入力値 = TextBox2.Value 'テキストボックスの値を取り出す
編集値 = Format(入力値, "###,###") 'コンマ編集する
TextBox2.Value = 編集値 'テキストボックスへ値をセットする
End Sub
'=========================================================================================
できました。キーボードから数字だけを入力するとマクロが動いて、コンマ編集した結果が表示されます。
5〜6桁の数字を入力する場合は、コンマがなくても、それほど読みにくくはないかと思います。しかし、10億、100億と桁数が多くなってくると、
コンマがあった方が断然見やすくなり、入力ミスも防げるでしょう。
マクロを組む甲斐がありますね。
サンプルブックのダウンロードは ここをクリック
(YNxv9836_BeforeUpdate.xls 59KB) ※ 一旦、ブックをハードディスクに保存し、後で改めて開いてから実行してください。
|
|
|
|
| |
|
|