首页 > 解决方案 > VBA循环不去下一个工作表

问题描述

我有一个 VBA 代码,我想跳过“Sheet1”。但是,循环跳过“Sheet1”,然后结束子。它不会移动到Next ws.

有7个工作表..

在此处输入图像描述

请问我该如何解决?

Sub BrandRank_()

    Dim wb As ThisWorkbook
    Dim ws As Worksheet
    Dim TableName As String
    Dim LstObj As ListObjects

For Each ws In ThisWorkbook.Worksheets
    With ws
        If .Index <> 1 Then

'Insert Table
    .ListObjects.Add(xlSrcRange, .Range("A3"), .Range("A3").End(xlDown).End(xlToRight), xlYes).Name = TableName

'Apply a filter to "C3" (Largest to Smallest)
    .AutoFilter.Sort.SortFields.Clear
    .AutoFilter.Sort.SortFields.Add2 Key:=.Range("C3"), SortOn:=xlSortOnValues, Order:=xlDescending
    .AutoFilter.ApplyFilter
    .ListObjects(TableName).ShowAutoFilterDropDown = False

        End If
    End With
Next ws

End Sub

标签: excelvba

解决方案


您的 VBA 可能会遍历Personal.xlsb的工作表。

如果您从外部文件运行宏,请使用thisWorkbook属性来引用包含您的宏代码的工作簿。例如,ThisWorkbook是从加载项本身内部引用加载项工作簿的唯一方法。

ActiveWorkbook属性不返回加载项工作簿它返回调用代码的工作簿。直接按名称引用特定工作簿会更好(见下文)

我还建议考虑通过名称引用工作表,否则如果您(或其他人)更改工作表的顺序、添加隐藏的工作表等,您的代码可能会意外中断。

For Each wsSheet In Workbooks("NameOfYourBook").Worksheets

If wsSheet.Name <> "TOC" Then
'Put your code here 
End If
Next wsSheet

您也可以使用.CodeName属性。 查看详细信息。


推荐阅读