excel-vba 何时使用ActiveWorkbook和ThisWorkbook
示例
VBA最佳做法是始终指定VBA代码引用哪个工作簿。如果省略此规范,则VBA假定代码直接针对当前活动的工作簿(ActiveWorkbook)。
'--- the currently active workbook (and worksheet) is implied
Range("A1").value = 3.1415
Cells(1, 1).value = 3.1415但是,当同时打开多个工作簿时-尤其是当从Excel加载项运行VBA代码时-对该引用的引用ActiveWorkbook可能会混淆或定向错误。例如,具有UDF的加载项会检查一天中的时间并将其与存储在其中一个加载项(通常用户不容易看到)中的值进行比较,则必须明确标识哪个工作簿是被引用。在我们的示例中,我们打开的(活动的)工作簿在单元格A1中具有一个公式,并且没有为该活动的工作簿编写任何VBA。在我们的外接程序中,我们具有以下用户定义函数(UDF):=EarlyOrLate()
Public Function EarlyOrLate() As String
If Hour(Now) > ThisWorkbook.Sheets("WatchTime").Range("A1") Then
EarlyOrLate = "It's Late!"
Else
EarlyOrLate = "It's Early!"
End If
End FunctionUDF的代码已编写并存储在已安装的Excel加载项中。它使用存储在工作表中名为“WatchTime”的加载项中的数据。如果UDF使用ActiveWorkbook而不是ThisWorkbook,那么它将永远无法保证要使用哪个工作簿。
热门推荐
10 小红书平安祝福语简短
11 生日祝福语大全女孩简短
12 收生日红包祝福语 简短
13 领证幽默祝福语简短
14 法考面试祝福语简短
15 老哥出门祝福语简短语
16 送灯祝福语简短独特
17 幼儿狗年祝福语大全简短
18 好听的元旦简短祝福语