访问删除字符串中的换行符,程序告诉它为NULL

时间:2018-11-15 21:18:32

标签: vba ms-access access-vba

我有执行某项操作的代码,然后在文本字段中按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时

我不知道

我想我需要删除换行符,但是当文本框为空并且字符串的每个函数吐出该错误时该怎么做

3 个答案:

答案 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>