Excel 将工作簿用作变量

Excel 将工作簿用作变量,excel,vba,Excel,Vba,我有两个变量Temp和aw,它们都是工作手册。我想测试aw是否为空,如果为空,则将其指定为activeworkbook。我试过了 if len(aw) = 0 then set aw = activeworkbook 但我不断地犯错误 Static aw As Workbook Dim Temp As Workbook Set Temp = ActiveWorkbook If Temp = aw Then GoTo Here ElseIf Len(aw) = 0 Then Set aw =

我有两个变量
Temp
aw
,它们都是工作手册。我想测试
aw
是否为空,如果为空,则将其指定为activeworkbook。我试过了

if len(aw) = 0 then
 set aw = activeworkbook
但我不断地犯错误

Static aw As Workbook
Dim Temp As Workbook
Set Temp = ActiveWorkbook
If Temp = aw Then
GoTo Here
ElseIf Len(aw) = 0 Then
Set aw = ActiveWorkbook
Else
Application.ScreenUpdating = False
aw.Activate
ActiveSheet.Range("K5:K7").Clear
Set aw = Temp
aw.Activate
Application.ScreenUpdating = True
End If
Here:
aw.Activate
ActiveSheet.Range("K5").Select
Selection.Value = 15 * 60

Len
函数用于确定字符串的长度。它不接受工作簿对象作为输入。(不清楚工作簿的“长度”到底是多少!)

您要做的是测试
aw
是否为空:

If aw Is Nothing Then Set aw = ActiveWorkbook

为什么
aw
是一个静态变量?最好不要使用0。aw是静态的,因为我想让它记住上次运行宏时哪个工作簿处于活动状态,如果该工作簿已更改(因此出现
if Temp=aw
行),请返回该工作簿并清除一个单元格。这都是一系列复杂的宏的一部分@cheezsteak它将大大简化您的项目。当我有时间做一些建议的更改时,这肯定会是一个有用的链接。谢谢