VBA代码适用于一个选项卡而不适用于其他选项卡

时间:2018-04-16 15:29:50

标签: excel vba excel-vba excel-vba-mac

以下代码似乎只是在我访问网站时才会运行。选项卡,没有其他选项卡。有人能解释一下原因吗?

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

2 个答案:

答案 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