gpt4 book ai didi

excel - 检查 Excel 对象是否没有主题

转载 作者:行者123 更新时间:2023-12-04 19:50:36 25 4
gpt4 key购买 nike

如果我从 Excel FormatCondition 中读取 Border 的 ThemeColor,它会给我一个错误

'Application-defined or object-defined error'

在监视列表中,或者

Run-time error 5: 'Invalid procedure call or argument'

在立即窗口中阅读时。其他时候它只是 Null。当存在实际有效的边框集时,似乎会出现错误。

来自 https://learn.microsoft.com/en-us/office/vba/api/excel.border.themecolor我得到以下信息

Attempting to access a theme color for an object whose color is not currently themed will result in an invalid request run-time error.

我正在检查的其他对象也有类似的问题,例如 .Interior.ThemeColor

我如何判断一个对象是否有主题 - 有官方方法吗?我是否可以使用存在错误这一事实来推断它不是主题,或者是否会因其他原因而出现错误?

一些示例代码:

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 tc As Variant
tc = b1.ThemeColor 'error
tc = cf1.Interior.ThemeColor 'error

要重现,请创建一个具有条件格式规则的 Excel 工作表。我使用的规则是使用一个公式,例如 =NOT(ISNUMBER(C9)),并在单元格底部施加一个单元格填充颜色,有时还有一个边框,并覆盖一系列单元格,例如 $C$8:$ 39 加元

最佳答案

不直接回答单元格是否有主题,而是处理Run-time error '5' :无效的过程调用或参数直接在以典型方式寻址潜在主题对象的上下文中 error handling in VBA .所以不仅仅是

something.ThemeColor   ' access any theme-property

你可以在你的 Sub 中遵循这个基本结构

Sub ThemeTest()
Dim isThemed As Boolean: isThemed = True
On Error GoTo notThemedError
something.ThemeColor ' access any theme-property; jumps to notThemedError on error
On Error GoTo 0 ' reset error handling to normal
If isThemed Then do_something Else do_other
... more code
Exit Sub

notThemedError:
' Optionally re-raise the error if it's not Error 5
If Not Err.Number = 5 Then Err.Raise Err.Number, Err.Source, Err.Description
isThemed = False
Resume Next ' go on after where the error was raised
End Sub

关于excel - 检查 Excel 对象是否没有主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53479211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com