gpt4 book ai didi

vba - 'With Worksheets ("xxxx")' works only when "xxxx”是事件工作表

转载 作者:行者123 更新时间:2023-12-02 19:11:43 27 4
gpt4 key购买 nike

我对 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,它会忽略所有错误。

在您的情况下,问题是您试图使用此行 .Range( 引用 ActiveSheetOracle 中的范围“A1”,范围(“A1”)。End(xlToRight))。。因此错误是不可避免的。

您有两种选择来确保您的代码正常运行:

  1. 只需激活工作表“Oracle”并运行代码即可。一切正常。
  2. 尝试像这样重写它:
<小时/>
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命令。

关于vba - 'With Worksheets ("xxxx")' works only when "xxxx”是事件工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48382421/

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