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

我需要更改工作簿中某些选项卡的颜色,并在另一个问题中发现基本上可能的解决scheme

唯一的问题是,它不适合我。 我用我原来的工作簿进行了testing,并创build了一个全新的空白的工作簿。 在这两种情况下,它不工作与一个新的空白工作簿我得到一个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 

当我设置variables时总是发生错误

 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的三个答案都帮助完成了这项工作。 多谢你们。 不幸的是,我只能接受一个答案。 我用对象,因为它使用较less的字节。

您正在接收Type Mismatch错误,因为您正尝试将数据分配worksheets集合对象不相关的tabsvariables。

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是指使用所提供的密钥无法在集合中find的对象。 你确定表名称Array("Tabelle 1", "Tabelle 2", "Tabelle 3")存在吗? "Tabelle"和数字之间应该有空格吗? 也许它应该是"Tabelle1", "Tabelle2", "Tabelle3"

尝试将Dim tabs As WorksheetsreplaceDim tabs As Worksheets

 Dim tabs As Sheets 

您应该将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 

在这里输入图像说明