如果可选参数是IsMissing的变体,则下面的方法有效,如果它是字符串,则IsMissing无效。如何创建IsMissingOrEmptyString来应对两者?

Public Sub test(Optional varArg As Variant)

    m_Flag = false
    If IsMissing(varArg) Then
        m_Flag = true
    End If

 End Sub


Public Sub test(Optional varArg As String)

    m_Flag = false
    If varArg = "" Then
        m_Flag = true
    End If

 End Sub*

最佳答案

IsMissing仅适用于Variant数据类型,因为其他数据类型在声明时会自动进行初始化(分配默认值)。

如果是字符串变量,则默认值为vbNullString,为此进行测试的最快方法是使用lenB函数。

Public Sub test(Optional varArg as String)
  m_Flag = (LenB(varArg) = 0)
End Sub


如果varArg = "",则上面将m_Flag设置为true。

请注意,将varArg声明为字符串变量意味着无法区分将空字符串传递给过程的情况和过程调用中省略自变量的情况。

10-08 09:04