web-dev-qa-db-ja.com

テキストボックスに数値のみを許可する

数値のみを受け入れるTextBoxコントロールを作成したいと思います。

VB6でこれを行うにはどうすればよいですか?

8
Gopal

テキストボックスのテキストChangeイベントで、入力した値が数値かどうかを確認します。数値でない場合は、古い値を再度設定します。

Dim textval As String
Dim numval As String

Private Sub TextBox1_Change()
  textval = TextBox1.Text
  If IsNumeric(textval) Then
    numval = textval
  Else
    TextBox1.Text = CStr(numval)
  End If
End Sub
6
Thunder

コントロールボックス>コンポーネント>コントロール-> Microsoft Masked Edit Control6.0を右クリックします。
または通常のテキストボックスの場合:

Private Sub Text1_Validate(Cancel As Boolean)
 Cancel = Not IsNumeric(Text1.Text)

End Sub
8
pinichi

APIに任せます。この関数を.basモジュールに追加し、数値のみに設定する必要がある編集コントロールに対して呼び出します。

Option Explicit

Private Const ES_NUMBER = &H2000&
Private Const GWL_STYLE = (-16)
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long


'set an editbox to numeric only - return the previous
'style on success or zero on error
Public Function ForceNumeric(ByVal EditControlhWnd As Long) As Long
    Dim lngCurStyle As Long
    Dim lngReturn As Long

    lngCurStyle = GetWindowLong(EditControlhWnd, GWL_STYLE)
    If lngCurStyle <> 0 Then
        lngReturn = SetWindowLong(EditControlhWnd, GWL_STYLE, lngCurStyle Or ES_NUMBER)
    End If

    ForceNumeric = lngReturn

End Function

これを使用するには、TextBoxのハンドルを使用して関数を呼び出します。

Private Sub Form_Load()
    Dim lngResult As Long

    lngResult = ForceNumeric(Text1.hwnd)

End Sub
3
jac

これをチェックしてください:

http://www.vbforums.com/showthread.php?t=350067

各キー押下を確認する必要があります。または、最後に1つの検証を行うことができます。

1
zsalzbank

私は自分のプロジェクトでこのコードを使用しました:

Private Sub txtReceiptID_KeyPress(KeyAscii As Integer)
Dim Keychar As String
If KeyAscii > 31 Then
    Keychar = Chr(KeyAscii)
    If Not IsNumeric(Keychar) Then
        KeyAscii = 0
    End If
End If

エンドサブ

1
Chhornkimchheng

私は通常このコードを使用します:

Private Sub text1_KeyPress(KeyAscii As Integer)
    If Not IsNumeric(Chr(KeyAscii)) And Not KeyAscii = 8 Then
        KeyAscii = 0
    End If
End Sub

お役に立てれば。


コントロールとkeyPressメソッドを選択し、IDE次のメソッドを作成します。次に、メソッド内に次のコードを追加します。

Private Sub txtControl_KeyPress(KeyAscii As Integer)
   KeyAscii = RealKeyascii(txtControl, KeyAscii, 256 ^ 8)
End Sub
0

このコードを試してください:

Private Sub Text1_Change()
    textval = Text1.Text
    If IsNumeric(textval) Then
        numval = textval
    Else
        Text1.Text = CStr(numval)
    End If
End Sub
0

私は通常このコードを使用します:

Private Sub text1_KeyPress(KeyAscii As Integer)
    If Not IsNumeric(text1.Text & Chr(KeyAscii)) And Not KeyAscii = 8 Then KeyAscii = 0
End Sub
0
Gung Ariana

以下は整数に使用できます。

Private Sub text1_KeyPress(KeyAscii As Integer)
    If Not IsNumeric(text1.Text & Chr(KeyAscii)) And Not KeyAscii = 8 Then    KeyAscii = 0
    if (KeyAscii>=43) and (KeyAscii<=46) Then KeyAscii = 0 
    'it ignores '-', '+', '.' and ','
End Sub
0
Koko