3

Excelのようにキーを押すとテキストボックスをクリアする方法はありますか?

次のコードを試しましたが、テキストボックスをクリックするとテキストがクリアされます。あるキーを押したときにクリアしてほしい。

Private Sub Text10_GotFocus()
Text10.Value = ""
End Sub
4

3 に答える 3

2

コントロールがフォーカスを取得するたびに、コントロールのテキストコンテンツ全体を選択できます。次に、キーを押すと、選択したテキストが置き換えられます。

すべてのフォームのすべてのテキストボックスでこれを実行する場合は、[フィールドに入力する動作]設定を[フィールド全体を選択]に設定できます。(Access 2007で、[Officeボタン]->[アクセスオプション]->[詳細設定]からその設定を見つけ、そのダイアログの[編集]見出しの下を確認します。Access2003については、このページを参照してください。)

この設定は、フォームコントロールだけでなく、データシートビューのテーブルやクエリにも適用されます。それが望ましくない場合は、フォームのモジュールでVBAを使用して、特定のコントロールのみのテキストを選択できます。

Private Sub MyTextBox_GotFocus()
    Me.MyTextBox.SelStart = 0
    Me.MyTextBox.SelLength = Len(Me.MyTextBox)
End Sub

複数のコントロールに対してこれを実行する場合は、一般的な手順を作成できます。

Private Sub SelectWholeField()
    Me.ActiveControl.SelStart = 0
    Me.ActiveControl.SelLength = Len(Me.ActiveControl)
End Sub

次に、次のように、個々のコントロールのgetfocusイベントからそのプロシージャを呼び出します。

Private Sub MyTextBox_GotFocus()
    SelectWholeField
End Sub
于 2012-06-22T18:10:47.883 に答える
0
Private Sub Field1_KeyPress(KeyAscii As Integer)
If KeyAscii = 65 Then Me.Field1 = ""
'Or: If Chr(KeyAscii) = "A" Then Me.Field1 = ""
End Sub

数値を、フィールドをクリアするために使用するキーのASCII値に変更します

于 2012-06-22T16:29:37.230 に答える
0

フォームレベル変数を宣言します

Private CanDelete as Boolean

TextBoxがフォーカスを受け取ったら、CanDeleteをTrueに設定します

Private Sub txtTest_GotFocus()
  CanDelete = True
End Sub

KeyPressイベントで、CanDeleteがTrueの場合はテキストをクリアします

Private Sub txtTest_KeyPress(KeyAscii As Integer)
  If CanDelete Then
    Me.txtTest = ""
    CanDelete = False
  End If
End Sub
于 2012-06-25T19:59:32.230 に答える