VBA Excel更改多个选项卡的颜色

标签 vba excel

我想做一些我认为很简单的事情,但显然事实并非如此。 我需要一个可以同时更改多个选项卡颜色的脚本。如果我使用宏记录器,它会完成它的工作,但它会为每个单独的选项卡生成一个巨大的代码块,所以我希望我可以将一个数组放入其中,但我似乎无法弄清楚。

在我被卡住之前我已经走了这么远:

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

你会得到这个:

enter image description here

选项卡颜色并不采用每个颜色值。我收到高于 13 的值的错误。要获取正确的值,请使用宏记录器。

关于VBA Excel更改多个选项卡的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51268432/

相关文章:

vba - 循环遍历当前事件工作表中 Excel VBA 中的所有命名范围

vba - Excel - 打开给定名称的工作簿

vba - 工作表名称不匹配错误

excel - 更新 VSTO Excel 加载项

vba - 替换函数,如何替换不是所有找到的字符串?

VBA Excel - 将行复制到另一个有条件的工作簿工作表

vba - Excel VBA 中的重复用户表单

Excel VBA : Move items from one array to another array

vba - VBA 宏中另存为位置的对话框

ms-access - 编写 Excel VBA 以从 Access 接收数据