如何将ActiveSheet,ActiveWorkbook或ThisWorkbook设置为VBA中可选参数的默认值?

Chr*_*isB 3 vba properties parameter-passing excel-vba optional-parameters

我试图将可选参数的默认值设置为Excel的Application.ActiveWorkbook属性.这是我失败的尝试:

试图代码

Function SheetExists(ByVal sheetName As String, _
    Optional ByVal targetBook As Workbook = Application.ActiveWorkbook) As Boolean
Run Code Online (Sandbox Code Playgroud)

结果

这段代码引起了

需要常量表达式:编译错误

问题

  1. 什么是"常量表达"?
  2. 是否有另一种方法可以将ActiveWorkbook属性(和其他属性)用作函数和子例程中参数的默认值?

小智 7

你能用这样的东西:

Public function SheetExists(ByVal sheetName As String, Optional wb As Workbook)

  If wb Is Nothing Then Set wb =  Application.ActiveWorkbook 'or ThisWorkbook

  'your code here, for example
  wb.Application.Calculation = xlAutomatic 
End Sub
Run Code Online (Sandbox Code Playgroud)