Excel 我需要一个可以自动改变单元格颜色的宏
我需要根据其中包含的值更改同一单元格的颜色 我写了这段代码,它可以工作:Excel 我需要一个可以自动改变单元格颜色的宏,excel,vba,Excel,Vba,我需要根据其中包含的值更改同一单元格的颜色 我写了这段代码,它可以工作: Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("G47")) Is Nothing Then With Target.Interior Select Case Target.Value Case 0:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("G47")) Is Nothing Then
With Target.Interior
Select Case Target.Value
Case 0: .Color = RGB(Range("F4"), Range("G4"), Range("H4"))
Case 1 To 2: .Color = RGB(220, 0, 0)
Case 3 To 4: .Color = RGB(255, 0, 0)
Case 5 To 6: .Color = RGB(255, 102, 0)
Case 7 To 8: .Color = RGB(255, 165, 0)
Case 9 To 10: .Color = RGB(255, 215, 0)
Case 11 To 12: .Color = RGB(255, 255, 150)
Case 13 To 14: .Color = RGB(180, 255, 102)
Case 15 To 16: .Color = RGB(102, 255, 102)
Case 17 To 18: .Color = RGB(51, 204, 51)
Case 19 To 20: .Color = RGB(0, 140, 0)
Case Is > 20: .Color = RGB(0, 90, 0)
End Select
End With
End If
End Sub
问题是它不会自动改变颜色。然后,如果这个单元格中的值依赖于一个函数,并且我更改了该函数使用的值,那么即使单元格中的值更改,颜色也保持不变。
要使chenge成为颜色,我必须每次按enter键。我希望它像条件格式一样工作。我认为您的代码不起作用,因为您正在更改的单元格通过公式与您要格式化的单元格链接。如果是这种情况,您可以按照以下步骤操作 将颜色更改函数作为单独的函数添加到模块中,并将其命名为formatColor(Range) 在此函数中添加图纸引用,使其在正确的图纸上工作 在您的工作表中调用此函数。\u更改(ByVal目标为范围)为 现在,如果源数据位于另一个工作表中,请从该工作表的工作表中调用此函数
Private Sub Worksheet_Change(ByVal Target As Range)
range_list = Target.Dependents.Address
range_array = Split(range_list, ",")
For Each r In range_array
Call formatColor(r)
Next
End Sub
你必须在上面插入你的交叉检查。
如果它在同一张表中,您可以相应地修改代码
如果Target.Dependents.Address返回一个范围,则必须在所有单元格上进行循环以调用该函数。我认为您的代码不起作用,因为您要更改的单元格通过公式与要格式化的单元格链接。如果是这种情况,您可以按照以下步骤操作 将颜色更改函数作为单独的函数添加到模块中,并将其命名为formatColor(Range) 在此函数中添加图纸引用,使其在正确的图纸上工作 在您的工作表中调用此函数。\u更改(ByVal目标为范围)为 现在,如果源数据位于另一个工作表中,请从该工作表的工作表中调用此函数
Private Sub Worksheet_Change(ByVal Target As Range)
range_list = Target.Dependents.Address
range_array = Split(range_list, ",")
For Each r In range_array
Call formatColor(r)
Next
End Sub
你必须在上面插入你的交叉检查。
如果它在同一张表中,您可以相应地修改代码
如果Target.Dependents.Address返回一个范围,则必须循环调用所有单元格上的函数。不能使用条件格式吗?对于条件格式,我只找到了三个不同的值,我需要12种不同的颜色。这个解决方案是我找到的最好的解决方案,但不幸的是它不是动态重复的,但不是如此:尝试使用工作表\u Calculate事件。另外,正如一个小提示:如果Intersect(Target,Range(“G47”)(如果Intersect,Target,Range(“G47”))什么都不是,那么Exit Sub将删除嵌套级别,并使代码更具可读性。此外,这是否用于字符表?是的,解决方案似乎是使用calculate()而不是change()。但是我无法使它与calculate()一起工作。有人能帮我修改一下calculate吗?你不能使用条件格式吗?对于条件格式,我只找到了三个不同的值,我需要12种不同的颜色。这个解决方案是我找到的最好的解决方案,但不幸的是它不是动态重复的,但不是如此:尝试使用工作表\u Calculate事件。另外,正如一个小提示:如果Intersect(Target,Range(“G47”)(如果Intersect,Target,Range(“G47”))什么都不是,那么Exit Sub将删除嵌套级别,并使代码更具可读性。此外,这是否用于字符表?是的,解决方案似乎是使用calculate()而不是change()。但是我无法使它与calculate()一起工作。有人能帮我用计算器修改一下吗?