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

VB6で計算できるようなプログラムを作っています。

今3つのテキストボックスを作っています。そこにそれぞれ数字を入れてボタンを押すと計算結果が4つ目のテキストボックスに表示されるよう にしたいのです。
そこで質問したいのですが


(1)
3つのテキストボックスすべてが入力されるまで変換ボタンを使用できない(押せない)ようにするのはどのようにしたらいいのでしょうか?

(2)
3つのテキストボックスに入力された文字が数字以外の場合エラーメッセージ(数字を入力してくだい)と言う表示を出したい場合どのようにしたらいいのでしょうか?


上記の質問についてお解かりの方は、ぜひとも説明と方法を教えていただければと思っていますよろしくお願いします。

A 回答 (3件)

(2)


数値以外の入力ができない様にするというのは駄目ですか?


Private Sub Text1_KeyPress(KeyAscii As Integer)
Do
If KeyAscii >= Asc("0") And KeyAscii <= Asc("9") Then
Exit Do
End If
Select Case KeyAscii
Case vbKeyBack
Exit Do
Case vbKeyReturn
Exit Do
End Select

KeyAscii = 0
Loop While (0)
End Sub
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
これはいいです是非使わせていただきます。

お礼日時:2006/05/19 21:20

プログラムは色々な書き方が考えられます。


私は、素人ですので<素人ながらの書き方>を紹介しておきます。

・cmdStart で初期化し、cndExecute で計算を実行するという設定です。
・Change イベントを利用しても構いませんが、その場合は一桁目のマイナス符号の処理を追加する必要があります。

Private Sub cmdStart_Click()
  Me.cmdExecute.Enabled = False
  Me.Text1 = ""
  Me.Text2 = ""
  Me.Text3 = ""
  Me.Text4 = ""
End Sub

Private Sub Text1_LostFocus()
  入力チェック Me.Text1
End Sub

Private Sub Text2_LostFocus()
  入力チェック Me.Text2
End Sub

Private Sub Text3_LostFocus()
  入力チェック Me.Text3
End Sub

Public Sub 入力チェック(ByVal ctl As Control)
  If IsNumeric(ctl) Then
    '
    ' Text1,2,3 の全てが空でなければ cmdExecute ボタンの Enabled の値を真に設定します。
    '
    Me.cmdExecute.Enabled = Len(Me.Text1 & "") * Len(Me.Text2 & "") * Len(Me.Text3 & "") > 0
  Else
    '
    ' 入力された桁数が0以上のみチェック
    '
    If Len(ctl & "") > 0 Then
      MsgBox "数字を入力して下さい"
    End If
  End If
End Sub
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
なるほど入力をチェックしてですか
これもいいですね!

お礼日時:2006/05/19 21:23

1.if (Text1.text="") or (Text2.text="") or


   (Text3.text="") then Button1.Enabled=False

2.VB6の場合 if isNumeric(Text1.text)=False
        then MsgBox "数字を入力して下さい"
VB.NETの場合
Private Function IsDigit(ByVal Value As String) As Boolean
Dim K As Long

If Len(Value) = 0 Then
IsDigit = False
Exit Function
End If

For K = 1 To Len(Value)
If Not Mid(Value, K, 1) Like "[0-9]" Then Exit Function
Next K

IsDigit = True

End Function

参考URL:http://homepage1.nifty.com/rucio/main/technique/ …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
そうですね。メッセージを表示して全て一回リセットしてもう一度入力させると言うてもありですね

お礼日時:2006/05/19 21:22

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