我需要更改工作簿中某些标签的颜色,并且基本上找到了可能的解决方案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因为它使用较少的字节。
答案 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
答案 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"
。