我有执行某项操作的代码,然后在文本字段中按Enter键,问题是当您使用Ctrl + Enter时,我可以捕获该事件,但是访问权在下一行告诉我该字段显然为空
Private Sub Text5_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Or KeyAscii = 10 Then
If Len(Me.Text5) = 0 Then Exit Sub
If Val(Right(Me.Text5, 1)) > 2 Then Me.Text5 = Left(Me.Text5, Len(Me.Text5) - 1) & "0"
所以'Len'可以正常工作,但是'Right'函数给出了'Invalid use of null',当我点击debug并检查它的值为NULL时
我不知道
我想我需要删除换行符,但是当文本框为空并且字符串的每个函数吐出该错误时该怎么做
答案 0 :(得分:2)
您的支票问题是Len(Null)
不是0
,而是Null
。
有几种方法可以解决此问题。首先,如评论中所述,您可以简单地添加IsNull
的支票:
If IsNull(Me.Text5) Or Len(Me.Text5) = 0 Then
执行此操作的另一种方法是通过串联vbNullString
来强制其合并:
If Len(Me.Text5 & vbNullString) = 0 Then
答案 1 :(得分:1)
如果表达式为空,您也可以使用Nz
并设置您的愿望的返回值,在此示例中,也vbNullString
并检查此函数的结果:
If Nz(Me.Text5, vbNullString) = vbNullString Then
或
If Len(Nz(Me.Text5, vbNullString) = 0) Then
或
If Nz(Me.Text5, 0) = 0 Then
或
If Not Nz(Me.Text5, False) Then
确保可以先将结果存储在变量中,然后再检查并使用它。 满足您需求的任何东西。
答案 2 :(得分:0)
好吧,我会尽我所能进行测试,只是当您在某个字段上使用Ctrl + Enter并捕获按键时,由于某种原因该字段将为空,我看不到这种解决办法< / p>