プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。

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

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

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

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

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

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

A 回答 (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
    • good
    • 0

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
    • good
    • 0

リアルタイムでチェックしたいということであればKeyPressかChangeイベントあたりで入力される値を常にチェックして、"."の入力されたらフラグをたてて色々場合分けするとか。


リアルタイムでなくていいのであれば、一通り入力した後に入っている値を↓の回答者さんのアドバイス通りにチェックしてエラーですとか返せば良いかと。
    • good
    • 0

テキストボックスをインプットボックスに置換えています。

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
    • good
    • 0

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



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

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

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

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



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

1に関してですが、



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

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

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

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

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A