我想做一些我认为很简单的事情,但显然事实并非如此。 我需要一个可以同时更改多个选项卡颜色的脚本。如果我使用宏记录器,它会完成它的工作,但它会为每个单独的选项卡生成一个巨大的代码块,所以我希望我可以将一个数组放入其中,但我似乎无法弄清楚。
在我被卡住之前我已经走了这么远:
Sub TESTCOLOR2()
Dim ArrayOne As Variant
ArrayOne = Array("800", "1000", "1100", "1200", "1300", "1400", "1500", "1600")
With ArrayOne.Tab
.ThemeColor = 65535
End With
End Sub
我收到错误“需要对象”,仅此而已。
最佳答案
要制作 3 张具有相同颜色的纸张,通过数组传递,可以执行以下操作:
Public Sub MultipleTabChanger()
Dim wsToBeColored As Variant
wsToBeColored = Array("Sheets2", "Sheets4", "Sheets3") 'these are names
Dim singleWs As Variant
For Each singleWs In wsToBeColored
Worksheets(singleWs).Tab.ThemeColor = 7
Next
End Sub
循环遍历数组的变体并将它们作为参数传递给 Worksheets(parameter)
。所有这些的 Tab.ThemeColor
都已更改。
要为不同的工作表设置不同的颜色,数组和集合(Worksheets 是一个集合)中的小技巧是集合从 1 开始,数组从 0 开始。因此,我们有 Worksheets(i + 1)
以避免第 0 个元素:
Public Sub TestMe()
Dim arrColors As Variant
arrColors = Array(12, 2, 3, 4, 5) 'these are colors
Dim i As Long
For i = LBound(arrColors) To UBound(arrColors)
Worksheets(i + 1).Tab.ThemeColor = arrColors(i)
Next i
End Sub
你会得到这个:
选项卡颜色并不采用每个颜色值。我收到高于 13 的值的错误。要获取正确的值,请使用宏记录器。
关于VBA Excel更改多个选项卡的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51268432/