• ベストアンサー

テキスト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