Excelのようにキーを押すとテキストボックスをクリアする方法はありますか?
次のコードを試しましたが、テキストボックスをクリックするとテキストがクリアされます。あるキーを押したときにクリアしてほしい。
Private Sub Text10_GotFocus()
Text10.Value = ""
End Sub
Excelのようにキーを押すとテキストボックスをクリアする方法はありますか?
次のコードを試しましたが、テキストボックスをクリックするとテキストがクリアされます。あるキーを押したときにクリアしてほしい。
Private Sub Text10_GotFocus()
Text10.Value = ""
End Sub
コントロールがフォーカスを取得するたびに、コントロールのテキストコンテンツ全体を選択できます。次に、キーを押すと、選択したテキストが置き換えられます。
すべてのフォームのすべてのテキストボックスでこれを実行する場合は、[フィールドに入力する動作]設定を[フィールド全体を選択]に設定できます。(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
Private Sub Field1_KeyPress(KeyAscii As Integer)
If KeyAscii = 65 Then Me.Field1 = ""
'Or: If Chr(KeyAscii) = "A" Then Me.Field1 = ""
End Sub
数値を、フィールドをクリアするために使用するキーのASCII値に変更します
フォームレベル変数を宣言します
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