• 締切済み

小数か整数かを判定する方法

お世話になります。 ただいま、VB6で悩んでいる事があり質問させていただきに参りました。 1: あるテキストボックスがあり、それには数字のみ入力するのですが、 小数が入力された場合、小数点第1位までしか入力させない、または小数点第2位以下が入力されていた場合、エラーメッセージ表示という処理をしたいのです。 例えば、1.5という文字の入力はOKですが、1.55と入力された場合は、エラーメッセージを表示。 2: 上記のテキストボックスに整数が入力されていたら、Format関数で、"00000"というカタチにして、小数が入力されていたら、"000.0"というカタチにしたいのです。 整数か?小数か?という判定方法が分からず困っています。 熟練者の方々にはとても簡単な事かもしれませんが・・・。 ご教授の程、どうかよろしくお願いします。

みんなの回答

  • kakusuke
  • ベストアンサー率36% (95/259)
回答No.7

1: Dim BfrUpdValue As String Dim ShosuuKeta As Integer Private Sub Text1_GotFocus() ShosuuKeta = 1 BfrUpdValue = Text1.Text End Sub Private Sub Text1_Change() If (Val(Text1.Text) * 10 ^ ShosuuKeta) - _ Int(Val(Text1.Text) * 10 ^ ShosuuKeta) <> 0 Then Text1.Text = BfrUpdValue End If BfrUpdValue = Text1.Text End Sub 2: Private Sub Text1_LostFocus() If Val(Text1.Text) = Int(Val(Text1.Text)) = 0 Then Text1.Text = Format$(Val(Text1.Text), "00000") Else Text1.Text = Format$(Val(Text1.Text), "000.0") End If End Sub

  • kakusuke
  • ベストアンサー率36% (95/259)
回答No.6

1: Dim BfrUpdValue As String Dim ShosuuKeta As Integer Private Sub Text1_GotFocus() BfrUpdValue = Text1.Text End Sub Private Sub Text1_Change() If (Val(Text1.Text) * 10 ^ ShosuuKeta) - _ Int(Val(Text1.Text) * 10 ^ ShosuuKeta) <> 0 Then Text1.Text = BfrUpdValue End If End Sub 2: Private Sub Text1_LostFocus() If Val(Text1.Text) = Int(Val(Text1.Text)) = 0 Then Text1.Text = Format$(Val(Text1.Text), "00000") Else Text1.Text = Format$(Val(Text1.Text), "000.0") End If End Sub

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.5

リアルタイムでチェックしたいということであればKeyPressかChangeイベントあたりで入力される値を常にチェックして、"."の入力されたらフラグをたてて色々場合分けするとか。 リアルタイムでなくていいのであれば、一通り入力した後に入っている値を↓の回答者さんのアドバイス通りにチェックしてエラーですとか返せば良いかと。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

テキストボックスをインプットボックスに置換えています。SPLIT関数を使いました。VB6から使える。 テキストボックスでも、どちらでも、チェック後は、VAL()で数値化しておきましょう。 Sub test07() n = InputBox("数値") a = Split(n, ".") u = UBound(a) Select Case u Case 0 MsgBox "整数" Case 1 MsgBox "小数" Case Is >= 2 MsgBox "エラー" End Select End Sub

回答No.3

VB最近触ってないので、演算子がおかしかったらすいません。 A-Fix(A*10)/10 <> 0 もしくは誤差分を許容して、 Abs(A-Fix(A*10)/10) >= 10^(-N) こういう判定でどうでしょう? Nは適当な整数(10~15ぐらい)を入れます。

  • palmmy
  • ベストアンサー率38% (841/2169)
回答No.2

文字列として処理すればよいかと思います。 (1)小数点の有無判定 (2)小数点の一判定 文字列の長さと、位置で小数点以下の桁が分かると思います。

  • ikazuti
  • ベストアンサー率27% (130/469)
回答No.1

1に関してですが、 テキストボックスに入力するとき、if文で、「.」(少数点)の有無を調べ、「.」以下の数値が二つになった時点でメッセージボックスを表示。 それと同時に入力された数字を消す。 これで出来ませんでしょうか。 あと、小数点だけが入力されたら自動的に前に0を付けるとかの機能もあった方が良いかもしれません。

関連するQ&A

専門家に質問してみよう