Excel 在不同的特定工作表中循环代码

Excel 在不同的特定工作表中循环代码,excel,vba,Excel,Vba,我是VBA的新手,我正在努力变得更好。我有一个工作簿,我正在尝试循环代码。但仅限于特定的工作表,而不是整本书。基本上,我编写了一段代码,将数据透视表重新格式化为表,并格式化标题等。这在一张工作表中非常有效。但我还有10张表格需要处理——对于我的同事们(他们不是excel向导,如果只需按一下按钮就可以了——可以这么说) 我在谷歌上搜索了几个小时,尝试了许多不同的东西,有时我没有收到错误,但代码在作为宏运行时没有应用到其他工作表 (B11是所有板材的静态起点) 代码如下: Sub Ulti

我是VBA的新手,我正在努力变得更好。我有一个工作簿,我正在尝试循环代码。但仅限于特定的工作表,而不是整本书。基本上,我编写了一段代码,将数据透视表重新格式化为表,并格式化标题等。这在一张工作表中非常有效。但我还有10张表格需要处理——对于我的同事们(他们不是excel向导,如果只需按一下按钮就可以了——可以这么说)

我在谷歌上搜索了几个小时,尝试了许多不同的东西,有时我没有收到错误,但代码在作为宏运行时没有应用到其他工作表

(B11是所有板材的静态起点)

代码如下:

     Sub Ultimo_Pivot_Table()

'Start Loop? 
        
        'Select and copy pivot
            Columns("B:O").Select
            Selection.Copy
            Columns("P:P").Select
        'Paste pivot in new area
            Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
                , SkipBlanks:=False, Transpose:=False
            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False
        'Delete old pivot
            Columns("B:O").Select
            Range("O1").Activate
            Application.CutCopyMode = False
            Selection.Delete Shift:=xlToLeft
        'Select & Format as table
        With Range("B11")
            .Parent.ListObjects.Add(xlSrcRange, Range(.End(xlDown), .End(xlToRight)), , xlYes).Name = "Table1"
        End With
        'Format Headlines
        With Range("B11")
            Range(Selection, Selection.End(xlToRight)).Select
        End With
            With Selection
                .HorizontalAlignment = xlCenter
                .Orientation = 0
                .AddIndent = False
                .IndentLevel = 0
                .ShrinkToFit = False
                .ReadingOrder = xlContext
                .MergeCells = False
            End With
            With Selection
                .HorizontalAlignment = xlCenter
                .VerticalAlignment = xlCenter
                .Orientation = 0
                .AddIndent = False
                .IndentLevel = 0
                .ShrinkToFit = False
                .ReadingOrder = xlContext
                .MergeCells = False
            End With
            With Selection.Font
                .ThemeColor = xlThemeColorLight1
                .TintAndShade = -0.499984740745262
            End With
            Range("B2").Select
            With Selection
                .HorizontalAlignment = xlLeft
                .VerticalAlignment = xlCenter
                .WrapText = False
                .Orientation = 0
                .AddIndent = False
                .IndentLevel = 0
                .ShrinkToFit = False
                .ReadingOrder = xlContext
                .MergeCells = False
            End With
'End Loop? 

        End Sub

我已经尝试了很多不同的东西,所以这是没有任何循环尝试的原始代码。有什么建议吗?谢谢大家!

以下是如何循环浏览工作表的示例。您可以在每次迭代中调用宏:

Sub example()

    Dim i, n
    n = Worksheets.Count
    For i = 1 To n
        Worksheets(i).Activate
    Next i
    
End Sub

未经测试,但您应该了解:

子测试仪()
将ws设置为工作表
'在包含此代码的工作簿中的工作表上循环
对于此工作簿中的每个ws。工作表
'如果有数据透视表,则调用sub并传递工作表
如果ws.PivotTables.Count=1,则最后一个Pivot\u表ws
下一个ws
端接头
子终极透视表(ws-As工作表)
作为ListObject的Dim lo
ws.Columns(“B:O”)。副本
带ws.Range(“P1”)
.Paste特殊粘贴:=xlPasteAllUsingSourceTheme
.Paste特殊粘贴:=xlPasteValues
以
ws.Columns(“B:O”)。删除移位:=xlToLeft
Set lo=ws.ListObjects.Add(xlSrcRange,ws.Range(“B11”)。CurrentRegion,xlYes)
lo.Name=“表1”
和lo.HeaderRowRange
.HorizontalAlignment=xlCenter
.垂直对齐=xlCenter
.Font.ThemeColor=xlThemeColorLight1
.Font.TintAndShade=-0.499984740745262
以
带ws.Range(“B2”)
.HorizontalAlignment=xlLeft
.垂直对齐=xlCenter
.WrapText=False
以
端接头

如何确定是否需要处理工作表?按姓名通过检查它是否包含透视表?向我们展示您试图更改其他工作表的内容。这里没有这些代码。还有关于使用.Select和依赖循环中的活动*对象的常见警告。由于许多原因,它们是不受欢迎的,并且很容易成为导致您出现问题的原因(尽管我们不知道,因为我们还没有看到您尝试过的东西)。。。。只是代码不应该使用
Activate
或依赖于活动工作表。像我一样新-在我的示例中它看起来如何?我将把自己的代码放在哪里?