前言:
目前兄弟们对“vba键盘事件keydown”大约比较珍视,兄弟们都想要了解一些“vba键盘事件keydown”的相关资讯。那么小编在网上汇集了一些关于“vba键盘事件keydown””的相关内容,希望小伙伴们能喜欢,朋友们一起来学习一下吧!大家好,我们今日继续讲解VBA代码解决方案的第93讲内容:在利用文本框完成人机对话过程,如何智能控制录入数据的字符多少,这个问题具有一定的代表性,希望能起到抛砖引玉的作用。在上一讲的内容中我们讲了利用文本框完成复杂的录入过程。其实,在录入数据的时候往往会有很多的限制,以期望我们的录入数据是准确的。
今天讲的例子就是录入数据字符长度的限制,比如,这个文本框是需要录入身份证号码的,那么我们就可以设定这个文本框的长度值,以免我们录入错误。
在使用文本框输入数据时,限制能输入的字符长度,即只能输入一定长度的字符,超过设置数值就不能输入,这时可以通过设置文本框的MaxLength属性来实现,应用于文本框控件的MaxLength属性规定用户可以在文本框中输入的最多字符数,语法如下:
object.MaxLength [= Long]
参数a) object是必须的,是一个有效的对象。
b) Long是可选的,整数,表示所允许的字符数。
注意:如果将MaxLength属性设置为0,表示只要内存允许则没有限制。
让我们先来看看这个属性在什么地方来设置:如下面的截图,就在那里直接设置即可。
那么有没有办法在代码中设置呢?当然有的,我们看看下面的代码:
如下面的代码所示。
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
With TextBox1
If Len(Trim(.Value)) > 0 Then
If KeyCode = vbKeyReturn Then
Sheets("sheet11").Range("A65536").End(xlUp).Offset(1, 0) = .Value
.Text = ""
End If
End If
End With
End Sub
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case Asc("0") To Asc("9")
Case Asc("-")
If InStr(1, Me.TextBox1.Text, "-") > 0 Or _
Me.TextBox1.SelStart > 0 Then
KeyAscii = 0
End If
Case Asc(".")
If InStr(1, Me.TextBox1.Text, ".") > 0 Then
KeyAscii = 0
End If
Case Else
KeyAscii = 0
End Select
End Sub
Private Sub UserForm_Activate()
TextBox1.MaxLength = 8
End Sub
Sub MyNzC()
UserForm1.Show
End Sub
代码解析:
工作表录入窗口的激活事件发生后,将文本框的MaxLength属性设置为8,使文本框只能输入8个字符,超过8个字符即不能输入。代码的截图窗口如下:
在上面的代码中,我把之前几篇文章中用到的代码也一同测试了。
今日内容回向:
1 如何限制文本框中字符长度?
2 完成控件属性的设置有什么方法?
标签: #vba键盘事件keydown