VBA IF值为空结束脚本,否则继续

时间:2016-07-13 15:54:16

标签: vba if-statement conditional

VBA新手,所以我为这里的任何愚蠢道歉。我正在为我们的软件定制脚本,似乎到处都有excel脚本。

工作代码

IF StrComp(XXXX.GetField("Col_1"), RIGHT(xxxx.GetField("Col_2"), 4)) <> 0 
Then xxxx.SetField "Col_1" , RIGHT(xxxx.GetField("Col_2"), 4)
End If

正在发生的事情是脚本运行正常,但如果Col_1中有空白值而Col_2中有空值,则表示正在使用****更新Col_1。我想如果Col_2什么都不是,空白或NULL就不能在所有结束脚本中执行任何操作,但是如果有一个值来测试Col_1 = Col_2的最后4个,如果它们不相等则运行更新。希望这是有道理的。这是我的尝试,但坠毁和烧毁。

If RIGHT(xxxx.GetField("Col_2"), 4) Is Nothing 
THEN Exit
IF StrComp(XXXX.GetField("Col_1"), RIGHT(xxxx.GetField("Col_2"), 4)) <> 0
Then xxxx.SetField "Col_1" , RIGHT(xxxx.GetField("Col_2"), 4)
End If

1 个答案:

答案 0 :(得分:1)

试试这个

rightVal = RIGHT(xxxx.GetField("Col_2"), 4)
If IsNull(rightVal) Or rightVal = "" Then
    Exit Sub
End If

If StrComp(XXXX.GetField("Col_1"), rightVal) <> 0 Then
    xxxx.SetField "Col_1" , rightVal
End If

没有什么可以引用一个空的Object引用是VB,所以比较没有什么是不对的。此外,您需要指定要退出的内容,在本例中为&#34;退出子&#34;,并将其括在If块中(您的If语句保持全开)。

我还暂时存储RIGHT(xxxx.GetField("Col_2"), 4)的值,以便每次都重新计算。