2012-06-22 46 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。在Excel中輸入數字,然後點擊其他地方。當你再次點擊同一個文本框並按下某個鍵時,它將被刪除。我想要實現相同的功能。 – Ish

回答

2

每當控件獲得焦點時,可以選擇控制的全部文本內容的ASCII值。然後您的按鍵將替換選定的文本。

如果您希望每個表單上的每個文本框都發生這種情況,您可以將「行爲輸入字段」設置設置爲「選擇整個字段」。 (在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

聲明一個表格等級變量

Private CanDelete as Boolean 

當文本框獲得焦點,CanDelete設置爲True

Private Sub txtTest_GotFocus() 
    CanDelete = True 
End Sub 

在KeyPress事件,清除文本,如果CanDelete是真

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