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 用户定义函数,用于计算具有条件格式的单元格
如何通过VBA代码获取Excel 2012条件格式的色标制作的颜色