【发布时间】:2018-11-26 03:00:24
【问题描述】:
我有一个FormatCondition、cf1。我执行以下操作:
Dim WS As Worksheet
Dim fcs As FormatConditions
Dim cf1 As FormatCondition
Dim b1 As Border
Set WS = ActiveSheet
Set fcs = WS.Cells.FormatConditions
Set cf1 = fcs.item(1)
Set b1 = cf1.Borders.item(xlEdgeBottom)
Dim ls As XlLineStyle
ls = b1.LineStyle
如果我尝试在即时窗口中读取b1.LineStyle 或将其分配给一个变量(根据上面的最后一行),我会得到
错误 1004:'无法获取 Border 类的 LineStyle 属性'
(与监视列表中的错误字符串相同,但没有错误编号)
b1.Weight 我得到了类似的东西
无论条件格式的边界是否有一条线都会发生这种情况,这肯定是不对的。如果确实没有该格式的线型,我认为LineStyle 应该是xlLineStyleNone,如果有线型,那么它肯定应该是可读的吗?
有谁知道发生了什么以及我该如何解决?
请注意:我查看了找到的边框,其他一些边框属性似乎正确(即Color=0 和ColorIndex 是-4142 或-4105)。 ThemeColor 和 TintAndShade 是 Null,Creator 是 xlCreatorCode。
我在设置 LineStyle 和 Weight 中发现了一些对问题的引用,并且那些说工作表已被锁定。据我所知,这里不是这种情况。
补充:
我有时在尝试读取 b1.ThemeColor 时也会遇到不同的错误。
'应用程序定义的或对象定义的错误'
在观察名单中,或
运行时错误 5:'无效的过程调用或参数'
在立即窗口中阅读时。其他时候只是Null
进一步补充:
对于cf1.Interior.InvertIfNegative,我得到了
'应用程序定义的或对象定义的错误'
在观察名单中,或
运行时错误 1004:“应用程序定义或对象定义错误”
尝试在立即窗口中阅读时。
可能还有其他我还没找到。
【问题讨论】:
-
你能提供更多代码吗?
cf1是如何定义和初始化的?你能提供一个minimal reproducible example 来重现这个问题吗? -
@Pᴇʜ - 完成,抱歉。我已经检查过了,FormatCondition 确实似乎是有效的,它包含我在大多数属性中所期望的值。您将需要创建一个带有适当条件格式规则的 Excel 工作表进行测试。
-
我使用的规则是使用一个公式,例如
=NOT(ISNUMBER(C9)),并在单元格底部施加一个单元格填充颜色,有时还有一个边框,并覆盖一系列单元格,例如@987654343 @ -
使用单元格的DisplayFormat而不是通过formatconditions
-
感谢@EvR,但我实际上需要 FormatConditions