我想帮助一个代码来读取Excel单元格的颜色(其颜色在条件语句中更改:)和&根据该单元格颜色更改该工作表的选项卡颜色。任何帮助/建议表示赞赏。谢谢。 这是单元格中使用的条件语句:
=WENN(ODER(B2="open";B71="open";B82="open";B107="open");"open";"ok")
这是我正在使用的代码(我刚刚在线获得了一些代码):
Sub GetRGBColor_Fill()
'PURPOSE: Change the Tab Color based on the ActiveCell's Fill Color
If ActiveCell.Interior.Color = RGB(256, 0, 0) Then
ActiveSheet.Tab.Color = 256
ElseIf ActiveCell.Interior.Color = RGB(0, 256, 0) Then
ActiveSheet.Tab.Color = 3
Else
'just some random color
ActiveSheet.Tab.Color = 100
End If
我的意图是在第一张纸和另外两张纸(10张纸)中,相应标签的颜色反映了特定单元格的颜色,其颜色基于相应纸张中的条件语句。意味着3张纸中的每一张都具有基于相应纸张中的单元颜色的自己的颜色。 我知道代码中有错误,我只想要一些人指出错误以及我需要如何纠正错误。我是新手,因此会感激任何帮助。
答案 0 :(得分:0)
拜托,你能试试吗?
Sub setColor(sheet As String)
With ActiveWorkbook.Sheets(sheet)
If sheet = "Sheet1" Then
.Tab.Color = .Range("A1").Interior.Color
ElseIf sheet = "Sheet2" Then
.Tab.Color = .Range("B5").Interior.Color
ElseIf sheet = "Sheet3" Then
.Tab.Color = .Range("F4").Interior.Color
End If
End With
End Sub
您可以通过这种方式从工作表中调用它:
Private Sub Worksheet_Change(ByVal Target As Range)
'I guess these are the cells that make the final value [and color] change
If Target.Column = 2 Then
If Target.Row = 2 Or Target.Row = 71 Or Target.Row = 82 Or Target.Row = 107 Then setColor ActiveSheet.Name
End If
End Sub
如果三个工作表中的单元格相同,则应该更简单,因为您不需要if...elseif...end if
部分。
如果这不起作用,请尝试以下方法:
Private Sub Worksheet_Change(ByVal Target As Range)
setColor ActiveSheet.Name
End Sub
但请注意,每次工作表上的单元格发生更改时,都会调用setColor
子目录,因此根据您输入的数据量,可能会降低整个电子表格的速度。