vba textbox在失去焦点后如何重新获取焦点
答案:2 悬赏:50 手机版
解决时间 2021-03-28 20:34
- 提问者网友:咪咪
- 2021-03-27 20:09
vba textbox在失去焦点后如何重新获取焦点
最佳答案
- 五星知识达人网友:白昼之月
- 2021-03-27 20:44
直接在提示框语句后面接着用setfocus方法不行吗追问不行啊
代码如下:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsNumeric(TextBox1.Value) Then
MsgBox ("非数字")
TextBox1.SetFocus
End If
End Sub
提示信息弹出来了,但是没有获得焦点追答不能写在它本身的Exit 事件里,输入文本后下一步是怎么做的,代码应在下一步里。
要在本身的事件里检查,应用 TextBox1_Change() 或TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)事件代码,可限制不是数字的输入。追问现在我想检查textbox的输入内容是不是数字,如果不是数字的话弹出提示框,并且将焦点重新停在textbox上,能提供代码吗,谢谢追答Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
For i = 1 To Len(TextBox1.Text)
n = Asc(Right(TextBox1.Text, 1))
If n = 46 Or n > 47 And n < 58 Then Exit For
TextBox1.Text = Left(TextBox1.Text, Len(TextBox1.Text) - 1)
Next
End Sub
上面代码就控制了只能输入数字0~9和小数点,其他输入则会清除追问比这个方法有个问题,做到了检查,但是没有解决让它重新获取焦点的问题
不过还是非常感谢你,我已经想到另外办法来解决了追答你能确定输入之后该干什么,比如按“确定”按钮,那么你的代码就放在单击“确定”的代码里。
如果不能确定输入之后该干什么,那么可设一个全局变量(逻辑型),比如Bo,在你的代码确定它的值:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Bo=false
If Not IsNumeric(TextBox1.Value) Then
MsgBox ("非数字")
Bo=trueT
End If
End Sub
再他后续可能的事件代码里都加一句:if Bo=true then TextBox1.SetFocus
这样也能达到目的
代码如下:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsNumeric(TextBox1.Value) Then
MsgBox ("非数字")
TextBox1.SetFocus
End If
End Sub
提示信息弹出来了,但是没有获得焦点追答不能写在它本身的Exit 事件里,输入文本后下一步是怎么做的,代码应在下一步里。
要在本身的事件里检查,应用 TextBox1_Change() 或TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)事件代码,可限制不是数字的输入。追问现在我想检查textbox的输入内容是不是数字,如果不是数字的话弹出提示框,并且将焦点重新停在textbox上,能提供代码吗,谢谢追答Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
For i = 1 To Len(TextBox1.Text)
n = Asc(Right(TextBox1.Text, 1))
If n = 46 Or n > 47 And n < 58 Then Exit For
TextBox1.Text = Left(TextBox1.Text, Len(TextBox1.Text) - 1)
Next
End Sub
上面代码就控制了只能输入数字0~9和小数点,其他输入则会清除追问比这个方法有个问题,做到了检查,但是没有解决让它重新获取焦点的问题
不过还是非常感谢你,我已经想到另外办法来解决了追答你能确定输入之后该干什么,比如按“确定”按钮,那么你的代码就放在单击“确定”的代码里。
如果不能确定输入之后该干什么,那么可设一个全局变量(逻辑型),比如Bo,在你的代码确定它的值:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Bo=false
If Not IsNumeric(TextBox1.Value) Then
MsgBox ("非数字")
Bo=trueT
End If
End Sub
再他后续可能的事件代码里都加一句:if Bo=true then TextBox1.SetFocus
这样也能达到目的
全部回答
- 1楼网友:不如潦草
- 2021-03-27 21:49
引用姓王的wy的回答:
直接在提示框语句后面接着用setfocus方法不行吗exit事件里有个参数CANCEL 吧他的值改为false,
只要在EXIT事里写入CANCEL=FALSE。就不会退出TEXTBOX。
我也是刚学VBA以后多指教
直接在提示框语句后面接着用setfocus方法不行吗exit事件里有个参数CANCEL 吧他的值改为false,
只要在EXIT事里写入CANCEL=FALSE。就不会退出TEXTBOX。
我也是刚学VBA以后多指教
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯