gpt4 book ai didi

excel - vba 简单范围/对象错误

转载 作者:行者123 更新时间:2023-12-04 22:09:18 25 4
gpt4 key购买 nike

所以我以为我对 VBA 有很好的掌握,但现在这个错误真的让我很烦恼,我无法弄清楚问题所在。
这是一个非常短的子程序(从模块运行):

Sub test()
Dim lr
lr = Sheets(1).Range("a1", Cells(65, 1))
MsgBox lr.Address
End Sub

无论出于何种原因,这都会引发“应用程序定义/对象定义错误”

谁能解释一下?

编辑:
这也会引发同样的错误:
MsgBox Sheets(1).Range("a1", Cells(65, 1)).Address

编辑2:
我将稍微改变我的问题,因为我对对象的了解,但我用“查找”方法来使用它。
所以这里是代码:
Set lookrange = Sheets(1).Range(Cells(2, 1), Cells(200, 1))
Set result = lookrange.Find(what:=searchTerm, lookat:=xlWhole)

在这种情况下,它告诉我lookrange 引起了问题。

最佳答案

好的。你有几个问题。

Option Explicit
sub test()
Dim lr as Range
set lr = Sheets(1).Range("a1", Cells(65, 1))
MsgBox lr.Address
End Sub

首先,作为 VBA 新手,请使用 Option Explicit几乎总是在模块的顶部,因此您需要确定变量的尺寸。

第二,你从来不声明 lr作为对象类型 - 确保将其声明为类型 Range - 您不一定必须这样做,但是,这是一种很好的做法。

三、需要使用 set正如其他人在分配对象时指出的那样,例如 Range值,否则您将始终收到该错误。

到你问题的第二部分。
MsgBox Sheets(1).Range("a1", Cells(65, 1)).Address

将此更改为
With Sheets(1)
MsgBox .Range(.Range("A1"), .Cells(65, 1)).Address
End With

如果您曾经从不同于 Sheet1 的工作表运行它你会得到错误,因为 Cells(65,1)引用不会出现在 Sheet1 - Excel 会认为您的意思是当前工作表。

第三部分
Set lookrange = Sheets(1).Range(Cells(2, 1), Cells(200, 1))
Set result = lookrange.Find(what:=searchTerm, lookat:=xlWhole)

与第二部分有相同的问题。另请注意,如果 result,您完全有可能会运行错误。如果 Find 找不到,上面的第二个语句( Find 的结果)将导致错误不成功。

关于excel - vba 简单范围/对象错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12711519/

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