我对 Excel VBA 还很陌生。到目前为止,我已经在这个网站上阅读并学到了很多东西,但还没有找到解决我的问题的方法。
作为宏的一部分,我有以下代码:
With Worksheets("Oracle")
On error resume next
ActiveWorkbook.Names("bron").Delete
ActiveWorkbook.Names.Add Name:="bron", RefersTo:= Range("A1", Range("A1").End(xlToRight).End(xlDown))
.Cells.Select
With Selection.Font
.Name = "Verdana"
.FontStyle = "Standaard"
.Size = 8
End With
.Range("A1", Range("A1").End(xlToRight)).Font.Bold = True
MsgBox "Tabblad ‘Oracle’ is klaar!", vbOKOnly
End With
我知道,对于代码的第一行,活动工作表实际上是什么并不重要。但问题是它仅在 Oracle 为活动工作表时才有效。我做错了什么?
如果您正在使用With Worksheets() ... End With
这意味着您想要引用特定的工作表而不是ActiveSheet
。这被认为是 VBA 中的良好实践。
正如 @GSerg 的评论中提到的,您的代码不起作用,因为所有范围前面都没有点。但是,您无法注意到这一点,因为您正在使用On Error Resume Next
,它会忽略所有错误。
在你的情况下,问题是你试图引用一个范围,该范围既在ActiveSheet
and in Oracle
用这条线.Range("A1", Range("A1").End(xlToRight)).
。因此,错误是不可避免的。
您有两种选择来确保您的代码有效:
- 只需激活工作表“Oracle”并运行代码即可。它会正常工作的。
- 尝试像这样重写它:
With Worksheets("Oracle")
On Error Resume Next
ActiveWorkbook.Names("bron").Delete
ActiveWorkbook.Names.Add Name:="bron", _
RefersTo:=.Range("A1", .Range("A1").End(xlToRight).End(xlDown))
With .Cells.Font
.Name = "Verdana"
.FontStyle = "Standaard"
.Size = 8
End With
.Range("A1", .Range("A1").End(xlToRight)).Font.Bold = True
MsgBox "Tabblad ‘Oracle’ is klaar!", vbOKOnly
End With
看一下所有范围都用点引用,并且Select
命令不再使用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)