【问题标题】:Is there a way to implement VBA-Workbook_SheetChange across all sheets for changing the cell color?有没有办法在所有工作表中实现 VBA-Workbook_SheetChange 以更改单元格颜色?
【发布时间】:2021-12-07 19:09:24
【问题描述】:

对于我们公司,我们有一个包含多个工作表的 Excel 工作簿。

我们有一个主表,所有更改都将在其中进行。

其他工作表是已将单元格链接到母版的母版的分支。

我知道有一种方法可以实现 worksheet_change 以便在手动更改单元格时更改单元格的内部颜色,并且我知道如何实现。

但是,有没有办法在工作簿中的所有非手动更改的单元格中实现相同的颜色更改?

让我试着举一个例子,这样你就可以更好地理解我想要做什么。

假设工作表 1 中的单元格 A1 包含单词“Hello”。

我希望工作表 2 中的单元格 B2 具有工作表 1 中的单元格 A1 的任何内容...因此工作表 2 中的单元格 B1 也将包含单词“Hello”。

现在,假设我想将工作表 1 中的单元格 A1 更改为“再见”,我希望工作表 1 中的单元格 A1 以浅绿色突出显示。然后,我希望表 2 中的单元格 B2 说“再见”(因为它已链接到表 1 中的单元格 A1,所以它已经这样做了),但更重要的是,以相同的浅绿色突出显示单元格 b1。

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Target.Interior.Color = RGB(216, 228, 188)
End Sub

这个^^是我用来改变主表上的单元格颜色的。它确实有效,但仅适用于该工作表。

我只是不知道如何告诉 vba,“嘿,我希望你填充工作簿中所有已更改单元格的背景。”

【问题讨论】:

  • 我认为您正在寻找类似this
  • 事件是Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range),但在您的情况下没有用。您是否希望仅在例如Sheet1 然后在所有(或列表)工作表中,同一单元格旁边的单元格应该是绿色的,下一列和下一行中的单元格应该是值?。
  • @VBasic2008 我想在 master 中进行更改时触发突出显示。我还希望突出显示在其中一个分支表中更改的单元格中触发。
  • @Warcupine 我不知道如何理解这一点,因为我对 VBA 很陌生。如果是 Python 或任何其他编码语言,我可能会更了解它。

标签: excel vba


【解决方案1】:

您的代码将通过向其添加一个循环并使用其索引 nr 迭代工作表来应用于所有工作表。

    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
        Call WorksheetLoop(Sh, Target)
    End Sub
    Private Sub WorksheetLoop(ByVal Sh As Object, ByVal Target As Range)
        Dim WS_Count As Long, i As Long
        WS_Count = ActiveWorkbook.Worksheets.Count
        For i = 1 To WS_Count ' loop.all sheets but don't update the active one
            Worksheets(i).Range(Target.Address).Interior.Color = RGB(216, 228, 188)
        Next i
    End Sub

【讨论】:

  • 考虑以下示例:[Sheet1!A1, 1], [Sheet2!B20, =Sheet1!A1+B1],[Sheet15!D40, =Sheet1!A1*25]。如果Sheet1!A1 发生更改,OP 想要为所有三个单元格着色,但他不知道其他两个引用或是否有任何引用。这是使用Formulas>Formula Auditing>Trace Dependents 手动完成的。 Warcupine 提供的链接在 VBA 中涵盖了这一点,但它相当复杂。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多