• ベストアンサー

テキストboxに数値を入れるときの質問

テキストボックスに txt_kingaku.Text = Forma(txt_kingaku.Text, "#,##0") でカンマ編集をして表示しているんですが 数字を入力すると 例)123456789と入力すると   895,671,234と表示されてしまします。   123,456,789と表示するにはどうすれば いいでしょうか?

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 おそらくテキストのChangeイベントに書いているからでしょう。 Changeイベントは1文字入力するごとに発生します。 そして、4桁を越えると実際に","が入るため、もう一度Changeイベントが発生し、カーソルが文字列の先頭になってしまいます。 そのため、5が1の前に入り、7まで入力すると、再び","が入るので、また、カーソルが先頭になり、8が先頭に入ってしまうのです。 で、以下のようにすると、一応うまく行きます。 (毎回カーソルを一番後ろにします。) txt_kingaku.Text = Format(txt_kingaku.Text, "#,##0") txt_kingaku.SelStart = Len(txt_kingaku.Text) + 1

TarePantu
質問者

お礼

ありがとうございました。 教えていただいた式を追加して実行してみたら うまくいきました。 とても助かりました。

その他の回答 (1)

  • mfuku
  • ベストアンサー率50% (173/345)
回答No.2

おそらくFormt関数を実行する前にtxt_kingakuのTextプロパティの値が何かしらの処理により変化しているのではないでしょうか? Format関数では正しくカンマ編集するはずです。 試しにイミディエイトウィンドウで下記の構文を実行してみて下さい。 ? Format("123456789", "#,##0") 123,456,789 という結果が得られるはずです。 カンマ編集の部分にブレイクポイントを置いてtxt_kingakuのTextプロパティの値を確かめてみたあと、その周辺のコーディングを再チェックしてみて下さい。 ところで、 txt_kingaku.Text = Forma(txt_kingaku.Text, "#,##0") ですが、Format関数の綴りが違ってます・・。

関連するQ&A

  • テキストボックスに・・・

    テキストボックスに数値を入力する際、常にカンマ表示に したいのです。 けれども、どう設定していいのかサッパリわかりません。 是非教えていただきたいと思います。 よろしくおねがいします。

  • アクセスのフォーム上のテキストボックスについて

    アクセスのフォーム上のテキストボックスについて フォーム上のテキストボックスに直接数字を入力しようとしています。ただ、このテキストボックスのコントロールソースはフォームのレコードソースと違うものです。 この状況でテキストボックスに数値を直接入力しようとすると、『コントロールソースに連結しているので、編集できません。』と表示され、入力出来ません。 どうすれば、解決できるのかご存知の方、教えて下さい。宜しくお願いします。

  • ExcelVBA テキストボックスについて

    フォーム上100個のテキストボックスがあります このテキストボックスに入力制限を加えたいのですが、どのように書けばよろしいでしょうか?  ・半角数字だけしか入力できない(計算に使う)  ・入力すると、1,234,567のような表示になり、右詰め  ・10桁までしか入力できない  ・予定の計算結果だと、10億を超えない  ・計算結果は数字が入力されるたびLabel1に表示される 私の作ったマクロだと、全てのテキストボックスに同じようなマクロを登録する結果になってしまい、これってもっと短くかけるのでは?と思い、質問いたしました よろしくおねがいします

  • テキストボックスのフォーカスについて

    テキストボックスの設定としては、右揃えにしてフォーカスが常に一番右に表示させていたいのですが、常に一番右に表示させる方法がわかりません。 なので、分かる方教えていただけないでしょうか? 一番右というのはテキストボックスに数字などが入力されてもフォーカスは常に入力された数字の右側にフォーカスがあるということです。

  • テキストボックスを空白にする方法

    テキストボックスに数字が入力されている場合はいいんですが、何も入力されていないときに、其のテキストボックスの値をゼロとすると、どうしてもテキストボックスに0と入力しなければ其のテキストを計算式に使えないので困っています。テキストボックスに何も表示されていないままにしたいのですが。(値はセロということのまま)   例えばテキストボックス1には10、テクストボックス2には何も入力しないでそのままにする。ボタンをクリックすると、二つの値が足されて合計10とでるようにしたいのです。その際テキストボックス2には何も入力されないままでお願いします。 わかりにくい説明ですみませんがよろしくお願いします。

  • テキストボックスの3桁

    よろしくお願いします。 テキストボックスの3桁置きにカンマを入れるために AA.Text = Format(AA.Text, "#,###")と、したのですが 123.456と表示されます。 これを 123,456と表示されるようにする方法を教えてください。

  • Accessのテキストボックスとコンボボックスの違い

    フォームにテキストボックスを3ケ用意し、テキストボックス名をtxt1,txt2,txt3としました。これにコマンドスイッチを作成し、機能を再クエリと設定しました。 フォームのサブフォームに再クエリの結果を表示するようにしました。 クエリのテキストボックス1の抽出条件は 条件  [Forms]![フォーム名]![txt1] または [Forms]![フォーム名]![txt1] Is Null    [Forms]![フォーム名]![txt1] Is Null テキストボックス2の抽出条件は 条件  [Forms]![フォーム名]![txt2] Is Null または [Forms]![フォーム名]![txt2]  [Forms]![フォーム名]![txt2] Is Null テキストボックス3の抽出条件は 条件  [Forms]![フォーム名]![txt3] Is Null または [Forms]![フォーム名]![txt3] Is Null [Forms]![フォーム名]![txt3] と設定し、テキストボックスにデータを入力し実行すると 正しい結果が得られるのですが、テキストボックスをコンボボックスに変更し、コンボボックス名をtxt1,txt2,txt3 とすると、抽出されません。 コンボボックスをテキストボックスのように扱うのには どうするのでしょうか。教えてください。

  • テキストボックスがなくなる!?

    更新前処理のイベントプロシージャで、入力すればテキストボックス表示・未入力ならばテキストボックス非表示に設定しました。そのときはうまくいくのですが、いったんフォームを閉じて新たに開けると、入力しているのに元のテキストボックスしか表示されていなくて、でも、レコードのデータは消えてないのです。このほかに設定しないとだめなんですか?

  • 【C#】コンボボックスに任意の数字を入力し、それをテキストボックスに表

    【C#】コンボボックスに任意の数字を入力し、それをテキストボックスに表示させる方法 C#初心者です。 コンボボックスの処理につまずいています。 <処理> 1.コンボボックスに任意の数字を入力できるようにしておく。 2.そして、任意の数字を入力する。 3.ボタンを押したら、その入力した数字がテキストボックスに表示される。 1と2はできるのですが、3がよくわかりません。 どなたかご教授いただけると幸いです。 宜しくお願いいたします。

  • テキストボックスでの数値の表示のしかた

    VBをつい最近はじめた者です。(^^; テキストボックスに、例えば '234'と入力したとき、同じテキストボックスに'000234'というように、あらかじめ決めた桁数(この場合6桁)を満たすように、上位の桁に0を表示させるようにするにはどうしたら良いでしょうか。 また、はじめは '000000' と表示させておき、入力後に'000234'と表示できるとなお良いです。 プロパティのMaxLengthで'6'の設定はしてあります。

専門家に質問してみよう