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

per*_*hil 3 excel vba excel-vba

我想做一些我认为很简单的事情,但显然事实并非如此.我需要一个可以同时更改多个标签颜色的脚本.如果我使用宏录制还挺它的工作,但它使每一个每一个单独的标签代码块巨大的,所以我希望我可以抛出一个数组,但我似乎无法推测出来.

在我被困之前,我走了这么远:

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
Run Code Online (Sandbox Code Playgroud)

我得到一个错误"对象需要",这是关于它..

Vit*_*ata 6

通过数组传递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
Run Code Online (Sandbox Code Playgroud)

循环遍历数组的变体并将它们作为参数传递给Worksheets(parameter).该Tab.ThemeColor改变了所有的人.


为了设置不同的颜色不同的片材,在数组和集合(工作表是一个集合)的小窍门,是集合开始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
Run Code Online (Sandbox Code Playgroud)

你会得到这个:

在此输入图像描述

选项卡颜色不会采用颜色的每个值.我的错误值高于13.要获得正确的值,请使用宏录制器.