gpt4 book ai didi

excel - VBA - 选择方法失败

转载 作者:行者123 更新时间:2023-12-04 20:37:48 31 4
gpt4 key购买 nike

我是 VBA 的新手,如果对于更有经验的用户来说问题很明显,我很抱歉。我试图阅读类似问题的几个答案,并解决了问题,但仍然面临同样的问题。

我的代码是:

Workbooks("XXX.xls").Activate

' Setting column width
Workbooks("XXX.xls").Worksheets("XXX").Cells.Select
Selection.ColumnWidth = 10

' Filtering XXX funds
Workbooks("XXX.xls").Worksheets("XXX").Rows("1:1").Select
Selection.AutoFilter Field:=3, Criteria1:="=*XXX*"

' Add new sheet and rename it
Sheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "XXX_F"

'Copying needed information
Workbooks("XXX.xls").Worksheets("XXX").Range("A1:C1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy

我得到的错误是底部第三行的“运行时错误'1004':范围类的选择方法失败”。我试图通过添加这一行来修复它(即激活我想首先使用的工作簿):
Workbooks("XXX.xls").Activate

我还在代码中使用了显式引用,例如:
Workbooks("XXX.xls").Worksheets("XXX").Range("A1:C1").Select

我知道最好不要在我的代码中使用 .Select 方法。但这不是我第一次收到此错误,我只是想了解 VBA 的逻辑。据我了解,Excel 只是不明白我指的是哪个工作表,但我不明白为什么 - 因为我已经激活了我需要的工作簿(我打开了几个工作簿)并使用了明确的引用。如果您能详细解释为什么会发生此错误(即Excel混淆的时间点),我将非常感激!

提前感谢大家的帮助!

最佳答案

对该问题的评论已经充分描述了 1004 的性质。错误,您似乎对此有足够的了解。

有关更多详细信息,请参阅此精彩讨论:

How to avoid using Select in Excel VBA macros

这是您的代码重构以避免Select方法。

Dim wb as Workbook
Dim ws as Worksheet
Dim newWS as Worksheet
Dim rngCopy as Range

Set wb = Workbooks("XXX.xls")
Set ws = wb.Worksheets("XXX")

With ws
' Setting column width
.Cells.ColumnWidth = 10

' Filtering XXX funds
.Rows(1).AutoFilter Field:=3, Criteria1:="=*XXX*"

Set rngCopy = .Range(.Range("A1:C1"), .Range("A1:C1").End(xlDown))
End With

' Add new sheet and rename it
With wb
Set newWS = .Sheets.Add(After:=.Worksheets(.Worksheets.Count))
End With
newWS.Name = "XXX_F"

' Paste data in to the new worksheet
rngCopy Destination:=newWS.Cells(1,1)

关于excel - VBA - 选择方法失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39370343/

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