2

根据我收集到的信息,条件格式无法跨工作簿中的工作表完成,所以我现在要做的是使用 VBA。

我想在 sheet1 的下拉列表中选择一个词(比如说“是”或“否”)!然后为一系列单元格着色;范围(“J3:P29”)在 sheet3 上!。如果选择“是”,则范围将被着色,如果选择“否”,则范围将不被着色。

我用宏记录器记录了下面的代码。但是,它不会记录下拉列表中的选择。它只是用逗号替换了动作。

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

我将不胜感激一些帮助。谢谢!

4

1 回答 1

0

您需要做出的几个改变。

  1. 您需要利用Worksheet_Changesheet1 上的事件来更新 sheet3。
  2. 在您的代码中,您需要直接引用 sheet3,因为您将无法从 sheet1 工作表事件中选择它。
  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
于 2013-09-10T02:51:39.263 回答