プロが教えるわが家の防犯対策術!

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

A 回答 (2件)

こんにちは。

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
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/12/17 15:39

おそらくFormt関数を実行する前にtxt_kingakuのTextプロパティの値が何かしらの処理により変化しているのではないでしょうか?


Format関数では正しくカンマ編集するはずです。

試しにイミディエイトウィンドウで下記の構文を実行してみて下さい。

? Format("123456789", "#,##0")

123,456,789
という結果が得られるはずです。

カンマ編集の部分にブレイクポイントを置いてtxt_kingakuのTextプロパティの値を確かめてみたあと、その周辺のコーディングを再チェックしてみて下さい。

ところで、
txt_kingaku.Text = Forma(txt_kingaku.Text, "#,##0")
ですが、Format関数の綴りが違ってます・・。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!