我有一个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
,如果有线条样式,那么它肯定应该可读吗?
有人知道怎么回事吗,我该如何解决?
请注意:我已经查看了发现的边框,并且其他一些Border属性似乎正确(即Color=0
和ColorIndex
是-4142
或-4105
)。 ThemeColor
和TintAndShade
是Null
,而Creator
是xlCreatorCode
。
我在 setting LineStyle和Weight中发现了一些有关问题的参考,这些人说工作表已被锁定。据我所知,情况并非如此。
添加:
尝试读取b1.ThemeColor
时,有时也会出现其他错误。
“应用程序定义的错误或对象定义的错误”
在监视列表中,或
运行时错误5:'无效的过程调用或参数'
在立即窗口中阅读时。其他时候只是Null
进一步添加:
对于cf1.Interior.InvertIfNegative
,我得到
“应用程序定义的错误或对象定义的错误”
在监视列表中,或
运行时错误1004:“应用程序定义或对象定义的错误”
当尝试在立即窗口中阅读时。
也许我还没有找到其他人。
答案 0 :(得分:2)
实际上,我可以复制您描述的问题。
问题似乎出在Set b1 = cf1.Borders.item(xlEdgeBottom)
中,根据文档FormatCondition.Borders property,这是正确的。
但是似乎存在一个错误,因为xlEdgeBottom
的值为9
(根据xlBordersIndex enumeration),并且如果我们研究cf1.Borders
的调试,我们看到只有项目1…4(见图片),其中4似乎是底部边框。
如果没有其他人在这里有一个很好的主意,我会说这看起来像一个Excel错误。
要解决此问题,您可以使用例如Set b1 = cf1.Borders.item(4)
作为底部边框。
Set b1 = cf1.Borders.item(xlBottom)
实际上为我工作。
很明显,FormatCondition.Borders
没有使用正确的xlBordersIndex enumeration,而是使用了xlTop
,xlLeft
,xlBottom
,{{1} }。
另请参阅FormatConditions border on a single edge。
但这仍然与文档不符,必须是一个错误。