【问题标题】:Read the color of a Excel Cell & change the tab color of that sheet with the same color读取 Excel 单元格的颜色并将该表的标签颜色更改为相同颜色
【发布时间】:2016-04-28 21:28:04
【问题描述】:

我需要有关读取 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 张纸中的每一张都将根据各自工作表中的单元格颜色具有自己的颜色。 我知道代码中有错误,我只是希望有人指出错误以及我需要如何纠正它。我是这方面的新手,因此将不胜感激。

【问题讨论】:

  • 欢迎来到 SO。您应该首先通过研究和记录宏自己尝试此代码,然后 SO 将帮助您解决任何错误或调整您的代码。如果您没有努力尝试自己解决问题,用户将不太可能为您的问题提供答案。
  • 对不起,当我发布问题时,我没有发布我正在使用的代码。我已经更新了帖子。显然,条件语句部分是我在上面编写的代码中难以理解/实现的部分。

标签: excel colors tabs cell


【解决方案1】:

拜托,你能试试这个吗?

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 子程序,因此根据您输入的数据量,它可能会减慢整个电子表格的速度。

【讨论】:

  • 感谢您的信息,我会尝试的。只是为了提供更好/更清晰的画面。表 1/表 1 在单元格 B1 中有代码,它有条件语句,如我的问题所示。其他工作表/表格将它们放在各自的工作表单元格 B3 中。除了 Sheet 1,其他的条件语句类似(但与 Sheet 1 不同)。这意味着他们在自己的工作表中查找不同的单元格。
  • 这两个 Sub 会在模块文件中吗?也不应该,在 Worksheet_Change(ByVal Target As Range)
  • 您必须将 setColor 子例程中引用的单元格更改为 B1、B3 和 B3 以用于您的工作表。这个 sub 放置在一个模块中,并从每个单独的工作表中调用。
  • 您将在每个工作表的 VBA 编辑器中找到 Worksheet_Change 子例程。您必须将代码添加到您希望标签颜色反映到B1B3B3 的工作表中。您可能必须更改 IF 以使其检查 =IF(OR(...)) 函数的单元格中的更改
猜你喜欢
  • 2015-10-21
  • 2013-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多