根据我收集到的信息,条件格式无法跨工作簿中的工作表完成,所以我现在要做的是使用 VBA。
我想在 sheet1 的下拉列表中选择一个词(比如说"is"或“否”)!然后为一系列单元格着色;范围(“J3:P29”)在 sheet3 上!。如果选择"is",则范围将被着色,如果选择“否”,则范围将不被着色。
我用宏记录器记录了下面的代码。但是,它不会记录下拉列表中的选择。它只是用逗号替换了 Action 。
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
我将不胜感激一些帮助。谢谢!
最佳答案
您需要做出的几个改变。
Worksheet_Change
您的 sheet1 上的事件以更新您的 sheet3。 将无法从 sheet1 工作表事件中选择它。
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
关于vba - Excel VBA,如何在一个工作表上的下拉列表中使用选择格式(颜色)另一个工作表上的一系列单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18709739/