从我收集的内容来看,条件格式不能跨工作簿中的工作表完成,所以我现在要做的就是使用VBA。
我想在sheet1的下拉列表中选择一个单词(让我们说“是”或“否”)!然后为一系列细胞着色; sheet3上的范围(“J3:P29”)!如果选择“是”,则范围将被着色,如果选择“否”,则范围将不会被着色。
我使用macrorecorder记录下面的代码。但是,它不会从下拉列表中记录选择。它只是用逗号代替了动作。
Sub RangeRed()
'
' RangeRed Macro
'
'
Range("J3:P29").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End Sub
我非常感谢一些帮助。谢谢!
答案 0 :(得分:0)
你需要做出改变。
Worksheet_Change
事件来更新工作表3。Target
值,评估它是否符合您的要求
指定条件并根据需要更新sheet3 打开VB编辑器并打开Sheet1代码。然后粘贴以下代码。
Private Sub Worksheet_Change(ByVal Target As Range)
' Target.Value will be contain the value of the changed cell
If Target.Value = "Yes" Then
With ThisWorkbook.Sheets("Sheet3").Range("J3:J5").Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Else
With ThisWorkbook.Sheets("Sheet3").Range("J3:J5").Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 0 ' change to whatever color you want if Yes is not selected
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
End Sub
请注意Target
将捕获工作表上更改的任何单元格区域。为了解决这个问题,您可以命名具有下拉列表的单元格,然后在Worksheet_Change
事件中,只有在匹配范围的名称时才评估Target
;例如
If Target.Name = "MyDropDown" Then
' Evaluate the value of Target and update sheet3 as intended
End If