即使代码另有指定,Excel仍在当前工作表上运行macros

我有以下代码:

Sheets("Booked").Range("$A$1:$H$379").AutoFilter Field:=8, Criteria1:= _ ">=" & StartDat Sheets("Booked").Range("$A$1:$H$379").AutoFilter Field:=9, Criteria1:= _ "<=" & EndDat CorBookCol = Worksheets("Booked").Cells.Find("Booked Impressions").Address BookAnswer = Worksheets("Booked").Application.WorksheetFunction.Subtotal(9, Range(CorBookCol, Range(CorBookCol).End(xlDown))) MsgBox (BookAnswer) Debug.Print "------------------" Debug.Print BookAnswer & " - Booked Answer" 

我们的目标是让macros从我的“预订”工作表中获取一个列的小计,并将该编号与当前工作表中的其他编号结合使用。 但是,即使我已指定macros从“已预订”工作表中find小计,它只会在当前工作表中find“BookedCorCol”地址的小计。 任何帮助,将不胜感激

你需要完全符合你的范围。 你看到了吗? (点)之前的范围对象? 如果你不这样做,那么范围将引用ActiveSheet

 With Worksheets("Booked") BookAnswer = .Application.WorksheetFunction.Subtotal(9, _ .Range(CorBookCol, .Range(CorBookCol).End(xlDown))) End With 

您忘记限定您传递给小计function的两个Range调用。

 With Sheets("Booked") .Range("$A$1:$H$379").AutoFilter Field:=8, Criteria1:=">=" & StartDat .Range("$A$1:$H$379").AutoFilter Field:=9, Criteria1:="<=" & EndDat CorBookCol = .Cells.Find("Booked Impressions").Address BookAnswer = Application.WorksheetFunction.Subtotal(9, .Range(CorBookCol, .Range(CorBookCol).End(xlDown))) End With MsgBox (BookAnswer) Debug.Print "------------------" Debug.Print BookAnswer & " - Booked Answer"