こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

お世話になります。

ただいま、VB6で悩んでいる事があり質問させていただきに参りました。

1:
あるテキストボックスがあり、それには数字のみ入力するのですが、
小数が入力された場合、小数点第1位までしか入力させない、または小数点第2位以下が入力されていた場合、エラーメッセージ表示という処理をしたいのです。

例えば、1.5という文字の入力はOKですが、1.55と入力された場合は、エラーメッセージを表示。

2:
上記のテキストボックスに整数が入力されていたら、Format関数で、"00000"というカタチにして、小数が入力されていたら、"000.0"というカタチにしたいのです。

整数か?小数か?という判定方法が分からず困っています。
熟練者の方々にはとても簡単な事かもしれませんが・・・。

ご教授の程、どうかよろしくお願いします。

投稿日時 - 2004-08-11 21:49:50

QNo.958952

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

8人が「このQ&Aが役に立った」と投票しています

回答(7)

ANo.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

投稿日時 - 2004-08-26 03:02:44

ANo.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

投稿日時 - 2004-08-26 03:01:05

ANo.5

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

投稿日時 - 2004-08-11 22:26:12

ANo.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

投稿日時 - 2004-08-11 22:21:58

ANo.3

VB最近触ってないので、演算子がおかしかったらすいません。

A-Fix(A*10)/10 <> 0

もしくは誤差分を許容して、
Abs(A-Fix(A*10)/10) >= 10^(-N)

こういう判定でどうでしょう?
Nは適当な整数(10~15ぐらい)を入れます。

投稿日時 - 2004-08-11 22:02:59

ANo.2

文字列として処理すればよいかと思います。

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

投稿日時 - 2004-08-11 22:01:16

ANo.1

1に関してですが、

テキストボックスに入力するとき、if文で、「.」(少数点)の有無を調べ、「.」以下の数値が二つになった時点でメッセージボックスを表示。

それと同時に入力された数字を消す。

これで出来ませんでしょうか。

あと、小数点だけが入力されたら自動的に前に0を付けるとかの機能もあった方が良いかもしれません。

投稿日時 - 2004-08-11 21:58:28

あなたにオススメの質問