我有一个公式自动的当我使用标签颜色更改时手动更换单元格,但当单元格被从另一张表更新它的函数更改时,它不起作用:=SUM('MEDENT Proposal - Creator'!B15) 问题 1. 我可以只更改我的 VBA 以直接查看另一张表“MEDENT Proposal - Creator”中的单元格吗?B15? 问题2。 还有其他方法可以编写此 VBA 以便它自动更新选项卡颜色吗 - 以下内容写得不正确吗? 同样,如果我手动更改该工作表中的单元格“A1”,它就会起作用...
Private Sub Worksheet_Change(ByVal Target As Range)
MyVal = Range("A1").Text
With ActiveSheet.Tab
Select Case MyVal
Case "0"
.Color = vbRed
Case "1"
.Color = vbGreen
Case "2"
.Color = vbGreen
Case "3"
.Color = vbGreen
Case "4"
.Color = vbGreen
Case "5"
.Color = vbGreen
Case "6"
.Color = vbGreen
Case "7"
.Color = vbGreen
Case "8"
.Color = vbGreen
Case "9"
.Color = vbGreen
Case Else
.ColorIndex = xlColorIndexNone
End Select
End With
End Sub
答案1
- 即使它是一个引用另一个工作表的公式,您也可以通过使用事件使其工作
Worksheet_Calculate
。 - 这
Worksheet_Calculate
惯于当您手动更改单元格时触发,因此如果您希望两种方案都能正常工作,则需要这两种方案。 - 您需要将代码放入您想要影响的每个工作表模块中。
- 你应该使用
Me.Tab
而ActiveSheet.Tab
不是除非你想它会为您当前所在的、可能没有所在的标签页着色。 Select Case
如果将值转换为实际整数,则可以真正缩短语句。
Private Sub Worksheet_Calculate()
ColorMyTab
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
ColorMyTab
End Sub
Private Function ColorMyTab()
Dim myVal As Integer
myVal = 99
On Error Resume Next
myVal = CInt(Range("A1").Value)
On Error GoTo 0
With Me.Tab
Select Case myVal
Case 0
.Color = vbRed
Case 1 To 9
.Color = vbGreen
Case Else
.ColorIndex = xlColorIndexNone
End Select
End With
End Function
如果您希望代码仅监视工作MEDENT
表上的单元格值,则可以在该工作表模块的代码中编写一个非常相似的脚本。但是,由于它只监视该工作表,因此您必须对要为其着色的选项卡进行硬编码。工作表是否MEDENT
控制多个选项卡的颜色?这些选项卡名称是否存储在A:A
您要更改的值在列中B:B
?如果您向我们提供有关您的最终目标的更多信息,我们可以推荐更好的解决方案。