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