【问题标题】:VBA IF Value is null end script else continueVBA IF值为空结束脚本否则继续
【发布时间】:2016-11-16 07:46:04
【问题描述】:

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 中有一个 Null 值,它将用 **** 更新 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

【问题讨论】:

    标签: vba if-statement conditional


    【解决方案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
    

    Nothing 指的是空的 Object 引用是 VB,所以与 nothing 相比并不完全正确。此外,您需要指定要退出的内容,在本例中为“Exit Sub”,并将其包含在 If 块中(您的 If 语句完全打开)。

    我还临时存储了RIGHT(xxxx.GetField("Col_2"), 4) 的值,以节省每次重新计算的时间。

    【讨论】:

    • 这不起作用,但我能够让代码正常工作。与您的示例类似,我暂时存储了这两个值,然后进行了一些逻辑测试并包括 NOT IsNull(Col_2)
    猜你喜欢
    • 2010-11-28
    • 1970-01-01
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多