【问题标题】:How can ActiveSheet, ActiveWorkbook or ThisWorkbook be set as the default for an optional parameter in VBA?如何将 ActiveSheet、ActiveWorkbook 或 ThisWorkbook 设置为 VBA 中可选参数的默认值?
【发布时间】:2018-01-23 17:27:04
【问题描述】:

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

尝试的代码

Function SheetExists(ByVal sheetName As String, _
    Optional ByVal targetBook As Workbook = Application.ActiveWorkbook) As Boolean

结果

这段代码导致了

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

问题

  1. 什么是“常量表达式”?
  2. 还有其他方法可以将ActiveWorkbook 属性(和其他属性)用作函数和子例程中参数的默认值吗?

【问题讨论】:

  • 1.常量表达式是编译器在编译代码之前可以推断出的表达式。 optional x = 5 很好,因为 5 是一个常量,如果缺少 x,编译器可以生成将 5 分配给 x 的代码,它不能对非常量值执行此操作,因为它们可以包含不同的值运行时的值。

标签: vba excel properties parameter-passing optional-parameters


【解决方案1】:

你能用这样的东西吗:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    • 2017-02-14
    • 1970-01-01
    • 2011-10-06
    • 2017-01-11
    相关资源
    最近更新 更多