標題:
[發問]
請教TextBox輸入錯誤如何回到原位置
[打印本頁]
作者:
koo
時間:
2015-8-30 10:10
標題:
請教TextBox輸入錯誤如何回到原位置
請教各位先進:
TextBox1輸入錯誤跳出MsgBox提示視窗後要如何回到TextBox1重新輸入
MsgBox "輸入錯誤"
TextBox1 = ""
TextBox1.SetFocus
使用SetFocus失敗焦點會跳到TextBox2
使用Application.SendKeys "{up}"經常會造成NumLook關閉
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 And TextBox1 > "" Then
Dim Rng As Range
Dim ax As Variant
Dim bx As String
Set Rng = Sheets("data").[K1:L24]
bx = TextBox1.Text
ax = Application.VLookup(bx, Rng, 2, 0)
If Not IsError(ax) Then
Label4 = ax
Else
MsgBox "輸入錯誤"
TextBox1 = ""
Application.SendKeys "{up}"
Exit Sub
End If
End If
End Sub
複製代碼
作者:
koo
時間:
2015-8-31 18:22
暫時先用全域變數來解決
Dim bCancel As Boolean
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Cancel = bCancel
bCancel = False
End Sub
複製代碼
作者:
准提部林
時間:
2015-8-31 19:16
回復
2#
koo
Cancel = True 即可取消Exit動作, 讓駐點留在原位,
但加個Msgbox後, 駐點整個消失不見了!
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1 = 1 Then
Cancel = True
TextBox1 = ""
MsgBox "ERROR" '消除此行再試看看
Else
MsgBox "通過"
End If
End Sub
但題主用的是KeyDown事件,Enter後駐點已移位,回不了頭的!
作者:
GBKEE
時間:
2015-9-1 11:05
回復
3#
准提部林
Cancel = True 即可取消Exit動作, 讓駐點留在原位
同理
ByVal KeyCode As MSForms.ReturnInteger
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 And TextBox1 > "" Then
Dim Rng As Range
Dim ax As Variant
Dim bx As String
Set Rng = Sheets("data").[K1:L24]
bx = TextBox1.Text
ax = Application.VLookup(bx, Rng, 2, 0)
If Not IsError(ax) Then
Label4 = ax
Else
MsgBox "輸入錯誤"
'TextBox1 = ""
KeyCode = True
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1)
End If
End If
End Sub
複製代碼
作者:
准提部林
時間:
2015-9-1 12:13
回復
4#
GBKEE
好個 KeyCode = True, 多收一招!
不過 MSGBOX 後, 駐點還是看不到, 不知是否版本問題(XP + 2000)?
作者:
GBKEE
時間:
2015-9-1 12:53
回復
5#
准提部林
沒有2000可了解
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1)
複製代碼
試試不MsgBox, 這段程式碼可用嗎?
作者:
准提部林
時間:
2015-9-1 13:28
回復
6#
GBKEE
加那兩行也是沒用, MSGBOX後, 駐點完全消失~~
為了克服這個問題, 以前都在Form下方加個Label做為說明提示及警告用(多個beep音效),
也乾脆輸入完成後, 在登錄按鈕時再執行前置檢查, 完全正確再後續工作,
有時在工作表設計成類輸入表單, 反而更好用~~
作者:
koo
時間:
2015-9-1 19:01
謝謝2位大大解說
使用KeyCode = True可以正常執行W7+2013
感謝
MsgBox "輸入錯誤"
KeyCode = True
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1)
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)