我正在尝试制作一个VBA代码,当其他2个单元格相等时,它会改变模式填充。我有以下代码:
Private Sub Workbook_Open()
' Macro2 Macro
' If (H5)=(J20) Then
Range("H7").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent2
.TintAndShade = 0.799981688894314
.PatternTintAndShade = 0
End With
If (H5) <> (J20) Then
Range("H7").Select
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Range("M20").Select
ActiveWorkbook.Save
End If
End Sub
代码的第一部分正在运行,但是当您更改2个单元格中的一个时,则在没有填充的情况下不会更改模式。代码有什么问题?
现在只有在打开工作簿时才运行宏。更改单元格时宏是否可能直接运行?
现在我为Cell H7编写宏,将H5与J20进行比较。我希望宏H5与J20:J29相比,这可能是一个“简单”的方式吗?
最后一个问题:是否也可以将宏用于同一张纸中的更多单元格,例如E5-E7,F5-F7,G5-G7,...... NK5-NK7与相同的kollom进行比较?(J20:J29)
是的,它是一种条件格式。但是我找不到通过比较2个其他单元来条件格式化单元格的正确公式/代码 例如。 “当E5中的日期在J20或J21或J22或......或J29中的日期相等时,E7为灰色,否则E7未填充”和 “当F5中的日期在J20或J21或J22或......或J29中的日期相等时,F7为灰色,否则f7未填充”,依此类推 “当NK5中的日期在J20或J21或J22或......或J29的日期相等时,NK7为灰色,否则NK7未被填充”。
答案 0 :(得分:0)
你不需要VBA。
使用范围E7:选择NK7时,单击“符号格式...新规则...”使用公式确定要格式化的单元格。
在公式框中输入=MATCH(E5,$J$20:$J$29,0)>0
,然后设置格式。
也要删除Workbook_Open
代码,否则下次打开工作簿时将替换E7中的条件格式。
答案 1 :(得分:0)
我在条件格式化中找到了解决方案。我把以下公式放在一个隐藏的行中
=ALS(GELIJK(E5;$J$20);1;ALS(GELIJK(E5;$J$21);1;ALS(GELIJK(E5;$J$22);1;ALS(GELIJK(E5;$J$23);1;ALS(GELIJK(E5;$J$24);1;ALS(GELIJK(E5;$J$25);1;ALS(GELIJK(E5;$J$26);1;ALS(GELIJK(E5;$J$27);1;ALS(GELIJK(E5;$J$28);1;ALS(GELIJK(E5;$J$29);1;ALS(GELIJK(E5;$J$30);1;0)))))))))))
模式填充现在取决于&#34; 0&#34;一个&#34; 1&#34;。
它的工作完美。通过细胞数在公式中使用(或不使用)$可以很容易地将公式复制到其他单元格。
附: ALS(dutch)=IF(English)
和GELIJK(dutch)=MATCH(English)