基于选项卡名称excel vba更改选项卡颜色
我希望能够根据选项卡单元格的名称更改选项卡颜色。我试图让我的版本从名称列表中选择以更改选项卡名称:基于选项卡名称excel vba更改选项卡颜色,vba,excel,Vba,Excel,我希望能够根据选项卡单元格的名称更改选项卡颜色。我试图让我的版本从名称列表中选择以更改选项卡名称: Sub SheetTabColor() Dim mySheets As Worksheets Dim mySheet As Worksheet Set mySheets = Sheets(Array("Christine", "Marina", "Roberto", "Urszula", "Lois", "Matt", "Stephanie",
Sub SheetTabColor()
Dim mySheets As Worksheets
Dim mySheet As Worksheet
Set mySheets = Sheets(Array("Christine", "Marina", "Roberto", "Urszula", "Lois", "Matt", "Stephanie", "Sally", "Iryna", "Katherine", "Matthew", "Julio", "Lavinia"))
For Each mySheet In mySheets
mySheet.Tab.Color = RGB(0, 255, 255)
Next
End Sub
运行此脚本后,我在“Set mySheets=”行中得到一个错误
如果您有任何反馈,我将不胜感激,我知道我可能还不太接近。试试看,它会将名称数组作为字符串而不是工作表
Sub SheetTabColor()
Dim mySheets() As Variant
Dim mySheet As Variant
mySheets = Array("Christine", "Marina", "Roberto", "Urszula", "Lois", "Matt", "Stephanie", "Sally", "Iryna", "Katherine", "Matthew", "Julio", "Lavinia")
For Each mySheet In mySheets
ThisWorkbook.Worksheets(mySheet).Tab.Color = RGB(0, 255, 255)
Next
End Sub
如果数组中的任何名称未作为工作表名称找到,则此代码将失败
以下内容将跳过任何未找到的内容:
Sub SheetTabColor()
Dim mySheets() As Variant
Dim mySheet As Variant
mySheets = Array("Christine", "Marina", "Roberto", "Urszula", "Lois", "Matt", "Stephanie", "Sally", "Iryna", "Katherine", "Matthew", "Julio", "Lavinia")
For Each mySheet In mySheets
On Error Resume Next
ThisWorkbook.Worksheets(mySheet).Tab.Color = RGB(0, 255, 255)
On Error GoTo 0
Next
End Sub
工作表与工作表不同
您试图将
工作表
分配给工作表
,因此出现错误
使用相同的类型,代码就会起作用
Sub test()
Dim mySheets As Sheets
Dim mySheet As Worksheet
Set mySheets = Sheets(Array("Sheet1", "Sheet2", "Sheet3"))
For Each mySheet In mySheets
mySheet.Tab.Color = RGB(0, 255, 255)
Next
End Sub
这是首选的方法,但在上下文中,如果仍然需要排列表,您也可以执行
mySheets=array(sheets(“Christine”)、
等。FWIW此代码比公认的答案更稳健、更一致。@Zerk除了使用sheets(“abc”)
之外,其他方法都会破坏此答案的强度,它使用适当的工作簿
对象明确限定集合,并使用工作表
集合取消对工作表
对象的引用,而不是工作表
集合,这可能会产生惊喜。我使用这种方法的唯一问题是每个循环的,用于迭代一个数组,但由于涉及的项目很少,所以这并不重要。@Mat'smugh只是好奇,总是渴望学习,没有循环,你会怎么做?如果代码意味着只处理工作表
-工作表,然后,它应该是[ActiveWorkbook.]工作表,而不是[ActiveWorkbook.]工作表。工作表
集合可以保存任何类型的工作表,包括工作表
,但也可以保存例如图表
工作表。也就是说,在我看来,用一张纸包裹整个阵列的做法是过分的。