excel模式填充取决于2个单元格是否相等

时间:2015-02-26 23:31:23

标签: excel vba

我正在尝试制作一个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未被填充”。

2 个答案:

答案 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)