【发布时间】:2018-01-22 21:57:09
【问题描述】:
我对 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 是活动工作表时才有效。我做错了什么?
【问题讨论】:
-
欢迎来到本站!查看tour 和how-to-ask page 了解更多关于提出问题以吸引高质量答案的信息。您可以edit your question 包含更多信息。问题是它只在
Oracle是活动的sheet 时才有效,还是只在包含Oracle的workbook 处于活动状态时才有效?如果另一个工作簿处于活动状态,Worksheets可能无法为您提供所需的内容。 编辑另外,实际的失败是什么? -
所有
Range(...)前面必须有一个.,而不仅仅是一些。 -
@cxw 谢谢!该代码涉及一个工作簿,不涉及其他工作簿,因此恕我直言,不同的工作簿不是问题。几周前我有相同的代码,但后来我使用 Worksheet.Activate 而不是 With Worksheets(“xxxx”),效果很好
-
感谢您的回复!我认为@GSerg 可能是正确的——对
Range(而不是.Range)的引用指的是当前工作表,而不是With语句中命名的工作表。我将参加近距离投票,但如果您仍然遇到问题,请不要犹豫,要求重新开放或提出其他问题。
标签: vba excel reference worksheet