如何在VBA中创建一个IsMissingOrEmptyString来处理可选参数?

use*_*291 2 excel ms-access vba excel-vba

如果可选参数是下面的变体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*   
Run Code Online (Sandbox Code Playgroud)

bra*_*cho 6

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

对于字符串变量,默认值为vbNullString,测试此方法的最快方法是使用lenB函数...

Public Sub test(Optional varArg as String)
  m_Flag = (LenB(varArg) = 0)
End Sub
Run Code Online (Sandbox Code Playgroud)

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

请注意,将varArg声明为字符串变量意味着无法区分将空字符串传递给过程的情况,以及在过程调用中省略参数的情况.