以下代码似乎只是在我访问网站时才会运行。选项卡,没有其他选项卡。有人能解释一下原因吗?
Sub GroupReport()
Dim vRegion As String
vRegion = Sheets("Region").Range("A3").Value
Sheets("Site").Cells.AutoFilter
Sheets("Site").Range("A1").AutoFilter Field:=1, Criteria1:=vRegion
Sheets("Site").Range("B2", Range("b2").End(xlDown)).Copy Destination:=Sheets("Region").Range("A8")
End Sub
答案 0 :(得分:3)
正如您在代码中看到的那样,您正在Site
工作表上运行一个程序:
Sheets("Site")
您正在应用过滤器和复制范围,但仅针对以下内容引用此过程:
Sheets("Site").Cells.AutoFilter
Sheets("Site").Range("A1").AutoFilter Field:=1, Criteria1:=vRegion
Sheets("Site").Range("B2", Range("b2").End(xlDown)).Copy Destination:=Sheets("Region").Range("A8")
如果您希望宏在所有worksheets
或“标签页”上投放,请使用ActiveSheet
property。
Option Explicit
Sub GroupReport()
Dim vRegion As String
vRegion = Sheets("Region").Range("A3").Value
With ActiveSheet
.Cells.AutoFilter
.Range("A1").AutoFilter Field:=1, Criteria1:=vRegion
.Range("B2", .Range("B2").End(xlDown)).Copy Destination:=Sheets("Region").Range("A8")
End With
End Sub
答案 1 :(得分:1)
声明工作表变量以保存代码正在处理的工作表的引用始终是一个好习惯。 此外,始终使用工作表参考完全限定范围。
请试一试......
Sub GroupReport()
Dim wsSite As Worksheet, wsRegion As Worksheet
Dim vRegion As String
Application.ScreenUpdating = False
Set wsSite = Sheets("Site")
Set wsRegion = Sheets("Region")
vRegion = wsRegion.Range("A3").Value
With wsSite
.Cells.AutoFilter
.Range("A1").AutoFilter Field:=1, Criteria1:=vRegion
.Range("B2", wsSite.Range("B2").End(xlDown)).Copy Destination:=wsRegion.Range("A8")
End With
Application.ScreenUpdating = True
End Sub