当运行下面的简单代码时,我得到了一个错误438运行时错误,斜体代码是错误突出显示的地方,但我的工作表名称和标题更新正常。有没有一种方法可以解决错误,或者简单地跳过错误而不中断宏?
Sub RenameSheet()
ActiveSheet.Name = Range("B2").Value
ActiveSheet.CenterHeader = ActiveSheet.Name '<~~ error here
End Sub
发布于 2018-07-13 05:41:27
错误438意味着你正在调用一个不存在的成员。
ActiveSheet
是Application
的一个属性,它返回一个Object
,这意味着你对它进行的任何成员调用都将是后期绑定的,也就是说,VBA运行时需要查询IDispatch
并在对象的vtable上定位该成员-换句话说,对于任何这样的成员调用,你都不能获得IntelliSense,任何输入错误都会很好地编译。
声明一个Worksheet
对象,而不是直接在ActiveSheet
上工作
Dim ws As Worksheet
Set ws = ActiveSheet
然后,您将获得针对它调用的所有内容的编译时验证,以及指导您完成成员调用的IntelliSense。
CenterHeader
属性是PageSetup
对象的成员:
ws.PageSetup.CenterHeader = ws.Name
https://stackoverflow.com/questions/51314765
复制相似问题