excel - 我可以在 with 语句中隐式地采用工作表参数吗?
问题描述
我有一个看起来像这样的子:
Public Sub CategoryChange(ChangeWS As Worksheet, NewCategory As String, StartDate As String, EndDate As String)
...
End Sub
我想知道为什么会这样:
Sub Test()
Call CategoryChange(ActiveSheet, Range("A1"), Range("A2"), Range("A3"))
End Sub
这不起作用(编译错误,参数不是可选的):
Sub Test2()
With ActiveSheet
Call CategoryChange(, Range("A1"), Range("A2"), Range("A3"))
End With
End Sub
如果我的 sub 期待一个工作表变量并且我在一个With
语句中编写,为什么它不会隐式地获取我的工作表?
解决方案
你不能这样做,因为语法不是那样工作的。With
仅提供引用对象成员的快捷方式,而不是对象本身。它不会“神奇地”将对象注入到对变量的缺失引用中。它只查找以句点 ( .
) 开头且前面没有引用的表达式并注入对象引用。
如果您的示例实际编译,则Range
必须引用其他参考,而不是ActiveSheet.Range
. 否则,你会这样做:
With ActiveSheet
Call CategoryChange(ActiveSheet, .Range("A1"), .Range("A2"), .Range("A3"))
End With
推荐阅读
- node.js - Electron app.on('ready'... 永远不会被调用,也永远不会显示电子窗口。似乎与特定的 Git 存储库相关联
- python - 太多的值需要解压(预期为 2)?
- r - x 轴的直线并使 y 轴名称笔直
- python - 可视化自动编码器层
- javascript - 如何创建一个角度组件的独立实例
- python - 由于后台的 semaphore_tracker 进程导致多进程冻结
- schema.org - Schema.org 中“电话”属性的最佳价值
- kotlin - 流 - 在没有多次迭代的情况下克隆流 - 我做得对吗?
- c - 使用 calloc 分配二维数组
- python - Airflow SSH运营商如何指定身份验证类型