2012-06-22 1 views
3

Excel에서와 마찬가지로 키 누르기에서 텍스트 상자를 지울 수있는 방법이 있습니까?키 입력시 텍스트 상자 지우기

다음 코드를 시도했지만 텍스트 상자를 클릭하면 텍스트가 지워집니다. 특정 키를 누를 때 그것을 지우고 싶습니다.

Private Sub Text10_GotFocus() 
Text10.Value = "" 
End Sub 
+0

가능한 중복 [텍스트의 선택을 취소하는 방법 매크로 안에?] (http://stackoverflow.com/questions/9588096/how-to-clear-text-box-inside-a-macro) – Fionnuala

+0

기능은 탁월해야합니다. Excel에서 숫자를 입력하고 다른 곳을 클릭하십시오. 동일한 텍스트 상자를 다시 클릭하고 키를 누르면 지워 집니 다. 동일한 기능을 구현하고 싶습니다. – Ish

답변

2

해당 컨트롤이 포커스를 얻었을 때마다 컨트롤의 전체 텍스트 내용을 선택할 수 있습니다를 취소하는 데 사용하고자하는 어떤 키의 아스키 값으로 숫자입니다. 그런 다음 키 누르기가 선택한 텍스트를 바꿉니다.

모든 양식의 모든 텍스트 상자에서이 작업을 수행하려면 "동작 입력 필드"설정을 "전체 필드 선택"으로 설정할 수 있습니다. Access 2007의 경우 Office 단추 -> 액세스 옵션 -> 고급에서 해당 설정을 찾은 다음 해당 편집 제목을 확인하십시오 .Access 2003의 경우 this page 참조)

해당 설정이 양식에 적용될뿐만 아니라 컨트롤뿐만 아니라 데이터 시트보기의 테이블과 쿼리에도 적용됩니다. 즉 당신이 원하는 아니라면, 당신은 특정 컨트롤의 텍스트를 선택하여 폼의 모듈에서 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 

다음과 같은 개별 제어 가지고 포커스 이벤트에서 해당 프로 시저를 호출

Private Sub MyTextBox_GotFocus() 
    SelectWholeField 
End Sub 
0
Private Sub Field1_KeyPress(KeyAscii As Integer) 
If KeyAscii = 65 Then Me.Field1 = "" 
'Or: If Chr(KeyAscii) = "A" Then Me.Field1 = "" 
End Sub 

변화는 필드

+0

나는 위를 시도하고 나가 열쇠를 누를 때마다 지워진다. – Ish

+0

http://msdn.microsoft.com/en-us/library/aa165567%28v=office.10%29.aspx에는 이벤트에 대한 정보가 있습니다. KeyAscii는 눌려진 키의 값이어야합니다 - 루틴에 전달되는 것을보기 위해'msgbox KeyAcii'를 사용해보십시오 – SeanC

0

변수 양식의 레벨을 선언

0 CanDelete에 해당하는 경우
Private CanDelete as Boolean 

텍스트 상자가 포커스를받을이 KeyPress 이벤트에 진정한

Private Sub txtTest_GotFocus() 
    CanDelete = True 
End Sub 

에 CanDelete를 설정, 텍스트를 취소

Private Sub txtTest_KeyPress(KeyAscii As Integer) 
    If CanDelete Then 
    Me.txtTest = "" 
    CanDelete = False 
    End If 
End Sub