2016-08-05 58 views
1

我有以下代码:运行Excel宏尽管代码另有规定

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" 

我们的目标是让宏获取子总从我的“预订”工作表,并用柱说号码与我目前工作表中的其他号码一起使用。但是,即使我已指定宏从“已预订”工作表中找到了小计,它只会在当前工作表中找到“BookedCorCol”地址的小计。任何帮助与此将不胜感激

回答

1

您需要完全限定您的范围。你看到Range对象之前的.(点)吗?如果你不这样做,那么范围将涉及ActiveSheet

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

你忘了资格,你传递给小计功能两个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" 
+0

工作就像一个魅力,感谢您的答案! –