textarea限制字符数_对不起,我只能接受八个字符,这是VBA代码给我的魔咒

大家好,我们今日继续讲解VBA代码解决方案的第93讲内容:在利用文本框完成人机对话过程,如何智能控制录入数据的字符多少,这个问题具有一定的代表性,希望能起到抛砖引玉的作用。在上一讲的内容中我们讲了利用文本框完成复杂的录入过程。其实,在录入数据的时候往往会有很多的限制,以期望我们的录入数据是准确的。

今天讲的例子就是录入数据字符长度的限制,比如,这个文本框是需要录入身份证号码的,那么我们就可以设定这个文本框的长度值,以免我们录入错误。

在使用文本框输入数据时,限制能输入的字符长度,即只能输入一定长度的字符,超过设置数值就不能输入,这时可以通过设置文本框的MaxLength属性来实现,应用于文本框控件的MaxLength属性规定用户可以在文本框中输入的最多字符数,语法如下:

object.MaxLength [= Long]

参数a) object是必须的,是一个有效的对象。

b) Long是可选的,整数,表示所允许的字符数。

注意:如果将MaxLength属性设置为0,表示只要内存允许则没有限制。

让我们先来看看这个属性在什么地方来设置:如下面的截图,就在那里直接设置即可。

32cb32b75625a7f10a3f71d483082fc8.png

那么有没有办法在代码中设置呢?当然有的,我们看看下面的代码:

如下面的代码所示。

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个字符即不能输入。代码的截图窗口如下:

5577b88e1af9cf06ef8a97a0d2069f67.png

在上面的代码中,我把之前几篇文章中用到的代码也一同测试了。

今日内容回向:

1 如何限制文本框中字符长度?

2 完成控件属性的设置有什么方法?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值