改变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
集合对象不相关的tabs
variables。
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 Worksheets
replaceDim 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
例