gpt4 book ai didi

excel - 如果单元格中的计算值发生变化,则更改单元格颜色

转载 作者:行者123 更新时间:2023-12-04 07:47:45 24 4
gpt4 key购买 nike

我在同一个电子表格中有 2 个工作表,第二个工作表日期基于第一个工作表,其中包含各种 vlookup .现在,我知道如果单元格中的计算值发生变化,如何更改单元格颜色:

Private Sub Worksheet_Change(ByVal Target As Range)
Target.Interior.Color = 3
End Sub
当我使用这个 VBA在第二个工作表中并更改第一个工作表,第二个工作表中的单元格颜色不会改变。当我手动更新第一个工作表时,我希望第二个工作表中带有公式的单元格改变它们的颜色。
可能吗?谢谢!
enter image description here
enter image description here

最佳答案

我猜一个解决方案:因为您在第二个工作表中的 VBA 代码将不起作用,因为我们没有用户触发。因此,在您的第一个工作表中,我们可以执行以下操作:

Private Sub Worksheet_Change(ByVal Target As Range)
Target.Interior.Color = RGB(255, 0, 0)
Worksheets("Name_Of_2nd_Worksheet").Range(Target.Address()).Interior.Color = _
RGB(255, 0, 0)
End Sub
当您在第一个工作表中更改某些内容时,第二个工作表将更改填充颜色。

第二种解决方案更复杂但更接近您的要求。它使用 VBA Worksheet_Calculate()第二张表中的事件,请先从第一张工作表中删除所有 VBA,如下所示:
Private Function getActualUsedRange(ByVal strVLookUp)
Set getActualUsedRange = Range("A1").Resize(Cells.Find(what:=strVLookUp, SearchOrder:=xlRows, _
SearchDirection:=xlPrevious, LookIn:=xlFormulas).Row, _
Cells.Find(what:=strVLookUp, SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, LookIn:=xlFormulas).Column)
End Function

'
' change color of all cells with formulas containing some string:
'
' strVLookUp: vlookup
' strFirstAddress: address of first cell, like $C$5
' objCell: range object of 1 cell
' objRange: range object of cells with formulas
' lBackColor: long for color index
'
Private Sub Worksheet_Calculate()

Dim strVLookUp As String, strFirstAddress As String
Dim objCell As Object, objRange As Object
Dim lBackColor As Long

' search this string in formulas in 2nd Worksheet:
strVLookUp = "vlookup"

' change back color as you want:
lBackColor = RGB(255, 150, 0)

' get whole range with formulas involving "vlookup":
Set objRange = getActualUsedRange(strVLookUp)

' if we find a range, loop over it:
If Not objRange Is Nothing Then

Set objCell = objRange.Find(strVLookUp, LookIn:=xlFormulas)

If Not objCell Is Nothing Then

strFirstAddress = objCell.Address

Do
objCell.Interior.Color = lBackColor
Set objCell = objRange.FindNext(objCell)
Loop While Not objCell Is Nothing And objCell.Address <> strFirstAddress

End If

' free memory:
Set objCell = Nothing
Set objRange = Nothing
'
End If
'
End Sub

这是基于以下事实:在第二个工作表中,一些单元格具有如下公式:=vlookup("MyValue", ...),您引用了 vlookup() 函数。

关于excel - 如果单元格中的计算值发生变化,则更改单元格颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67140179/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com