Excel VBA 条件格式与函数

Posted

技术标签:

【中文标题】Excel VBA 条件格式与函数【英文标题】:Excel VBA Conditional Formatting AND-Function 【发布时间】:2018-04-18 12:59:44 【问题描述】:

更新:

我尝试对以下情况使用条件格式:

如果 C 列中的单元格(以 C9 开头)Tabelle3.Range(Tabelle3.Cells(9, 3), Tabelle3.Cells(lastcell, 3))

    不为空Cell <>"" 和 满足 Tabelle4 单元格 B2 Tabelle4.Range("B2") 中所述的标准

Interior.Color 应更改为Cellclr,其Font.Color 应更改为Fontclr

开始旧帖: 我浏览了有关条件格式的各种帖子,但找不到任何内容,这可以很好地解决我的问题。

我想将条件格式应用于将不断扩展的 Excel 工作簿。因此,我编写了以下代码:

Sub ConForm()

Dim lastcell As Long
Dim Cellclr As Long
Dim Fontclr As Long

lastcell = Tabelle3.Range("A1048576").End(xlUp).Row
Cellclr = RGB(232, 245, 246)
Fontclr = RGB(26, 155, 167)

Set C = Tabelle3.Range(Tabelle3.Cells(9, 3), Tabelle3.Cells(lastcell, 3))

    With C.FormatConditions.Add( _
            Type:=xlExpression, _
            Formula1:="=AND($C9<>"""";"$C9.Value <= Tabelle4.Range(""B2"").Value)")
        .Interior.Color = Cellclr
        .Font.Color = Fontclr
    End With

End Sub

如果我只使用以下范围和公式:

Range("C9")
Formula1:="=C9<>""""") 

代码适用于 Cell C9。不过,前面已经说过,应该是这个公式

=AND($C9<>"""";"$C9.Value <= Tabelle4.Range(""B2"").Value

适用于范围

Tabelle3.Range(Tabelle3.Cells(9, 3), Tabelle3.Cells(lastcell, 3))

有人知道我在哪里犯了错误以及如何解决这个问题吗?

【问题讨论】:

如果您查看此代码的颜色编码,End Sub 是红色文本。 End With 也是如此。红色文本是字符串或数字。由于我不确定公式在条件格式中应该是什么样子,所以我不确定哪里缺少/额外的";但你绝对应该仔细看看那个字符串...... 【参考方案1】:

首先,检查格式上的颜色,看看什么是字符串,什么不是 - 你的公式中间有一个神秘的额外 ",这将首先阻止代码编译。您还尝试将 VBA 代码 (Tabelle4.Range("B2").Value) 放入 Excel 公式中,但这是行不通的。

如果你想在宏运行时修复Tabelle4.Range("B2").Value的值,你可以改变

Formula1:="=AND($C9<>"""";"$C9.Value <= Tabelle4.Range(""B2"").Value)")

Formula1:="=AND($C9<>"""";$C9<=" & Tabelle4.Range("B2").Value & ")")

【讨论】:

也感谢您的支持 :) 您的功能似乎与 PEH 的功能相同,并且使用此功能执行代码。 1. 但是如上所述,格式化条件在所有单元格中都是相同的。它们都指向单元格 C9。我怎样才能使这个灵活? 2.虽然,条件格式论坛被插入内部,字体颜色没有改变。你知道这里发生了什么吗? :) 公式被锁定到 C 列,但是(如果顶部单元格是第 9 行)该行应该随着代码向下移动而改变。我确实注意到您显示的代码中没有一行可以删除现有的条件格式 - 您是否查看过从“主页”>“条件格式”中放置的条件格式确保没有其他格式覆盖新内容?【参考方案2】:

您需要正确连接字符串和值。

例子:

MyVariable = "ccc"
result = "aaa" & "bbb" & MyVariable & "AnotherString"
'result is "aaabbbcccAnotherString"

我不确定你尝试了什么,但可能你的意思是这样的

Formula1:="=AND($C9<>"""";" & Range("$C9").Value <= Tabelle4.Range("B2").Value & ")")

或者更可能是这样的

Formula1:="=AND($C9<>"""";$C9<=Tabelle4!B2)")

更新:

Formula1:="=AND($C9<>"""";$C9<=" & Tabelle4.Range("B2").Value & ")")

【讨论】:

我刚刚更新了我的帖子,以更简要地解释我打算做什么。 :) 谢谢,使用这个函数可以执行代码。 1. 但是,格式条件在所有单元格中都是相同的。它们都指向单元格 C9。我怎样才能使这个灵活? 2. 即使在内部插入了条件格式论坛,字体颜色也没有改变。你知道这里发生了什么吗? :) @HPM 这应该可以按预期工作。在应用新条件之前,请确保删除该范围内可能已经存在的所有旧条件!

以上是关于Excel VBA 条件格式与函数的主要内容,如果未能解决你的问题,请参考以下文章

Excel VBA 用户定义函数,用于计算具有条件格式的单元格

Excel VBA条件格式未执行

Excel VBA:编辑新行的现有条件格式规则

如何通过VBA代码获取Excel 2012条件格式的色标制作的颜色

如何使用 vba 在 Excel 2007 中找到条件格式单元格的填充颜色值?

excel中怎样用vba使单元格在特定条件下才可以编辑?