如何在Excel VBA中检查变量是否为空,并将其他变量赋值给它

4

我正在尝试创建一个带有3个输入参数的函数,其中两个是可选的:colOffsetAcolOffsetB。如果在函数中仅使用了这两个可选参数中的一个,则希望该值也自动分配给另一个空的参数。目前,代码出于某种原因将值0分配给colOffsetB

Function TestCode(cellA As Range, Optional colOffsetA As Variant, Optional colOffsetB As Variant) As String

    If IsEmpty(colOffsetB) Then
        colOffsetB = colOffsetA
    End If
3个回答

8

我认为你要找的是IsMissing而不是IsEmpty。请尝试以下内容:

If IsMissing(colOffsetB) = True Then
    colOffsetB = colOffsetA
End If

这是一篇关于可选参数的优秀文章


1

使用vbNullString比IsEmpty和x=""等方式更快。

Function TestCode(cellA As Range, Optional colOffsetA As Variant, Optional colOffsetB As Variant) As String
If colOffsetB=vbNullString Then colOffsetB = colOffsetA
do
end function 

如果您的条件很基础,可以将所有内容放在同一行,不需要使用end if
希望能对您有所帮助。

0

如果这样使用会怎么样?

dim Var as variant ' Declare here without parenthesis
if isempty(var) then
    redim var(0)
    else
    redim preserve var(ubound(var)+1)
end if

1
你的回答可以通过提供更多支持信息来改善。请编辑以添加进一步的细节,如引用或文档,让其他人确认你的回答是正确的。您可以在帮助中心找到有关如何撰写良好答案的更多信息。 - Community
我建议在回答中不要使用修辞性问题。它们可能会被误解为根本不是答案。你是在尝试回答这个页面顶部的问题,对吗?否则请删除此帖子。 - Yunnosch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接