Excel VBA不会在工作表中循环(排除工作表)

Excel VBA不会在工作表中循环(排除工作表),vba,excel,Vba,Excel,宏现在可以在所有工作表中循环。但是,有没有办法使宏不应用于工作簿中的特定工作表,而是应用于所有其他工作表 Sub FormatSheet() Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets ws.Activate Columns("A:J").Select Selection.AutoFilter Columns("A:J").EntireColumn.AutoF

宏现在可以在所有工作表中循环。但是,有没有办法使宏不应用于工作簿中的特定工作表,而是应用于所有其他工作表

Sub FormatSheet()

Dim ws As Worksheet

For Each ws In ActiveWorkbook.Worksheets
    ws.Activate
        Columns("A:J").Select
        Selection.AutoFilter
        Columns("A:J").EntireColumn.AutoFit
        With Selection
            .HorizontalAlignment = xlCenter
        End With
        With ActiveWindow
            .SplitColumn = 0
            .SplitRow = 1
        End With
        ActiveWindow.FreezePanes = True
Next ws

End Sub

我创建了一个数据集来测试这一点,发现代码运行得很好。因此,它必须与您的特定数据/工作表相关。我想看看两张工作表是否有效,或者试着在另一个工作簿上制作一个较小的样本,看看是否有效。对不起,我帮不了你什么忙

我创建了一个数据集来测试这一点,发现代码运行得很好。因此,它必须与您的特定数据/工作表相关。我想看看两张工作表是否有效,或者试着在另一个工作簿上制作一个较小的样本,看看是否有效。对不起,我帮不了你什么忙

考虑一下这种方法

Option Explicit

Sub test()

    Dim ws As Worksheet

    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> "Sheet1" Then
            With ws.UsedRange
                .Resize(.Rows.Count-1).Offset(1, 0).ClearContents
            End With
        End If
    Next ws

End Sub
选项显式
子测试()
将ws设置为工作表
对于此工作簿中的每个ws。工作表
如果ws.Name为“Sheet1”,则
使用ws.UsedRange
.Resize(.Rows.Count-1).Offset(1,0).ClearContents
以
如果结束
下一个ws
端接头

考虑一下这种方法

Option Explicit

Sub test()

    Dim ws As Worksheet

    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> "Sheet1" Then
            With ws.UsedRange
                .Resize(.Rows.Count-1).Offset(1, 0).ClearContents
            End With
        End If
    Next ws

End Sub
选项显式
子测试()
将ws设置为工作表
对于此工作簿中的每个ws。工作表
如果ws.Name为“Sheet1”,则
使用ws.UsedRange
.Resize(.Rows.Count-1).Offset(1,0).ClearContents
以
如果结束
下一个ws
端接头

尝试执行“调试。打印此工作簿。工作表。计数”以确保有多个工作表“ThisWorkbook”指的是代码所在的工作簿,而不是activeworkbook。因此,这引起了我的思考,我将ThisWorkbook.Worksheets更改为activeworkbook.Worksheets,它在代码中,现在似乎运行正常。谢谢这解决了问题吗?请记住,在可能的情况下,应避免使用Active工作簿和ActiveWorksheet(以及Activate、Select和Selection)(并且很少出现不能用更健壮的解决方案替换这些项的情况)。如果你只是临时做这件事,那没关系,但是如果你打算更一致地使用这个宏,我建议你学习如何避免上面提到的项目。我很好奇selection.autofilter会做什么?它只是在第一行添加下拉列表吗?布兰登-是的,这似乎解决了问题。。。这只是我将每月使用的宏的一个片段。为了避免出现这种情况,我当然需要了解更多信息。请尝试执行“Debug.Print thishworkbook.Worksheets.Count”以确保有多个工作表“ThisWorkbook”指的是代码所在的工作簿,而不是activeworkbook。因此,这引起了我的思考,我将ThisWorkbook.Worksheets更改为activeworkbook.Worksheets,它在代码中,现在似乎运行正常。谢谢这解决了问题吗?请记住,在可能的情况下,应避免使用Active工作簿和ActiveWorksheet(以及Activate、Select和Selection)(并且很少出现不能用更健壮的解决方案替换这些项的情况)。如果你只是临时做这件事,那没关系,但是如果你打算更一致地使用这个宏,我建议你学习如何避免上面提到的项目。我很好奇selection.autofilter会做什么?它只是在第一行添加下拉列表吗?布兰登-是的,这似乎解决了问题。。。这只是我将每月使用的宏的一个片段。为了避免这种情况,我当然需要了解更多。