0

私は Visual Basic 6 を初めて使用するので、しばらくお待ちください (そして回答を徹底してください)。

フォームを作成していて、そのフィールドの 1 つに入力された情報が数値かどうかを確認する必要があります。そうでない場合、プログラムはビープ音を鳴らす必要があります。

フィールドはコントロールの配列の一部であり、txtMyField(0) という名前です。

私が書いたコードの最後のこと:

Private Sub txtMyField_Change(Index As Integer)
If Not IsNumeric(txtMyField(0).Text) Then
    Beep
End If
End Sub

このコードが正しいかどうかはわかりません。また、データベースに挿入する前にフィールドの値を確認するために Sub を呼び出して使用する方法もわかりません。

助けてくれてどうもありがとう!

4

2 に答える 2

2

これは、Validate イベントを使用して行うことができます。CausesValidation プロパティが true であることを確認する必要があります。true の場合、そのコントロールに対して Validate イベントが発生します。

イベントは次のようになります。

Private Sub txtMyField_Validate(Index As Integer, Cancel As Boolean)
    If Not IsNumeric(txtMyField(Index).Text) Then
        Beep
        Cancel = True
    End If
End Sub

これにより、コントロール配列内のすべてのコントロールが数値であることが保証されます (CausesValidation プロパティが起動時に True に設定されている場合)。コントロールの 1 つが空であるか、数値以外の文字が含まれている場合、コントロールがフォーカスを失ったときにビープ音が鳴ります。

ここでいくつか注意してください

  • ビープ音を鳴らすことは、検証エラーを示す良い方法ではありません。エラーを表示するフォーム内のメッセージ ボックスまたはテキスト ボックスは、通常、より良い方法です。ユーザーはビープ音を聞いていないか、「ビープ音」が「このフィールドに数字を入力する必要がある」ことを意味することを理解していない可能性があります。
  • あなたのコードは、インデックス = 0 のコントロールを参照しました。イベントは、コントロール配列内の任意のコントロールに対して発生する可能性があるため、control(5) を検証する必要があるときに、control(0) の値をチェックすることは実際には論理的なことではありません (例えば)。
于 2013-01-25T15:11:31.853 に答える
1

ビープ音の代わりに、texbox が特定のキーのみを受け入れるようにすることもできます

たとえば、数字キーとバックスペース キーのみを受け入れるテキスト ボックス:

Private Sub Text1_KeyPress(KeyAscii As Integer)
  KeyAscii = NrOnly(KeyAscii)
End Sub

Private Function NrOnly(intKey As Integer)
  Dim intReturn As Integer
  intReturn = intKey
  Select Case intKey
    Case vbKeyBack
    Case vbKey0 To vbKey9
    Case Else
      intReturn = 0
  End Select
  NrOnly = intReturn
End Function

NrOnly 関数にインテリジェンスを追加して、より多くのキーを許可したり、特定の境界を確認したりできます

ただし、ユーザーはマウスを使用してコピー&ペーストを介して他のデータを入力できるため、注意してください

于 2013-01-29T14:57:35.683 に答える