Excel VBA,如何在一个表单上使用下拉列表中的select格式(颜色)另一个表单上的一系列单元格

从我所收集的内容来看,条件格式化不能在工作簿中的表单之间完成,所以我现在要做的就是使用VBA。

我想在sheet1的下拉列表中select一个单词(比如说“是”或“否”)! 然后着色一系列的细胞; 范围(“J3:P29”)在sheet3 !. 如果select“是”,则范围将被着色,如果select“否”,则该范围不会被着色。

我使用macrorecorder来logging下面的代码。 但是,它不logging下拉列表中的select。 它只是用逗号取代了这个动作。

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 

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

你需要做的情侣变化。

  1. 您需要利用Worksheet_Change Sheet1上的Worksheet_Change事件来更新Worksheet_Change
  2. 在你的代码中,你需要直接引用sheet3,因为你将无法从sheet1工作表事件中select它。
  3. 使用Target ,评估它是否符合您的指定条件并根据需要更新工作表3

打开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