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
我将不胜感激一些帮助。 谢谢!
你需要做的情侣变化。
- 您需要利用
Worksheet_Change
Sheet1上的Worksheet_Change
事件来更新Worksheet_Change
。 - 在你的代码中,你需要直接引用sheet3,因为你将无法从sheet1工作表事件中select它。
- 使用
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