更改excel中多个选项卡的颜色

时间:2016-03-01 09:58:30

标签: excel vba excel-vba

我需要更改工作簿中某些标签的颜色,并且基本上找到了可能的解决方案here in another question

唯一的问题是,它不能与我合作。 我用原始工作簿测试了它,然后我创建了一个全新的工作簿。在这两种情况下它都不起作用 使用新的空白工作簿,我得到runtime error 9 "subscript out of range",并使用我的原始工作簿获得runtime error 13 "Type mismatch"

原始工作簿中的代码:

Sub Action_Tabs_red()
Dim tabs As Worksheets
Dim ws As Worksheet

Set tabs = Sheets(Array("cover", "financial overview", "revenues by segments", "Last twelve months"))

For Each ws In tabs
    ws.Tab.Color = 255
Next
End Sub 

空白文件中的代码:

Sub red()

Dim mySheets As Worksheets
Dim mySheet As Worksheet

Set mySheets = Sheets(Array("Tabelle 1", "Tabelle 2", "Tabelle 3"))

For Each mySheet In mySheets
    mySheet.Tab.Color = 255
Next

End Sub

设置变量

时总会出现错误
Set tabs = Sheets(Array("cover", "financial overview", "revenues by segments", "Last twelve months"))

Set mySheets = Sheets(Array("Tabelle 1", "Tabelle 2", "Tabelle 3"))

有人知道我做错了什么,或者为什么会出现这些错误?

提前感谢您的帮助。

来自lturner,MikeD和lenwe的所有3个答案帮助并完成了这项工作。多谢你们。不幸的是,我只接受一个答案。我使用Object因为它使用较少的字节。

3 个答案:

答案 0 :(得分:1)

尝试用

替换Dim tabs As Worksheets
Dim tabs As Sheets

答案 1 :(得分:1)

您应该将MySheets声明为Variant

Sub red()
Dim mySheets As Variant
Dim mySheet As Worksheet

    Set mySheets = Sheets(Array("Sheet1", "Sheet2", "Sheet3"))
    For Each mySheet In mySheets
        mySheet.Tab.Color = 255
    Next
End Sub

示例 enter image description here

答案 2 :(得分:1)

您收到Type Mismatch错误,因为您尝试将数据分配给tabs变量,该变量与worksheets集合对象无关。

Worksheets指的是整个工作簿中的工作表集合 - 您不能使用它来引用您自己的工作表“数组”。如果要声明工作表数组,则需要将它们声明为Object

Dim tabs As Object
Dim mySheet As Worksheet

Set tabs = Sheets(Array("Sheet1", "Sheet2", "Sheet3"))

For Each mySheet In tabs
    Debug.Print mySheet.Name
Next mySheet

Subscript out of Range指的是使用提供的密钥无法在集合中找到的对象。您确定工作表名称Array("Tabelle 1", "Tabelle 2", "Tabelle 3")是否存在? "Tabelle"和数字之间应该有空格吗?也许它应该是"Tabelle1", "Tabelle2", "Tabelle3"