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会做什么?它只是在第一行添加下拉列表吗?布兰登-是的,这似乎解决了问题。。。这只是我将每月使用的宏的一个片段。为了避免这种情况,我当然需要了解更多。