gpt4 book ai didi

excel - 如何将对象传递给 VBA 类获取属性方法而不收到 'Object not Defined' 错误?

转载 作者:行者123 更新时间:2023-12-03 03:09:54 24 4
gpt4 key购买 nike

将工作表传递给类对象方法时,我收到:

Error 91: Object Variable or With Block variable not set.

问题是,我不知道它在哪里,我还没有设置对象。

Dim WS As Worksheet
Set WS = oExport.ExportSheet(oExport.WB)

Dim testint As Integer
Dim oAsset As clsAsset
testint = oAsset.AssetIDCol(WS)

我已经检查过,工作表对象在代码的第 2 行中设置正确。为“testint”变量赋值时会发生错误。这是我的 clsAsset 属性中的 .AssetIDCol() 属性:

Option Explicit

Private priv_asset_id_col As Integer

Public Static Property Get AssetIDCol(WS As Worksheet) As Integer

If Not priv_asset_id_col = Null Then
AssetIDCol = priv_asset_id_col
Exit Property
End If

Dim rngX As Range
Dim Val As Variant
Dim i As Integer

Set rngX = WS.UsedRange '.Rows(1) '.Find(SearchVal, LookAt:=xlWhole)

For i = 1 To rngX.Columns.Count

If InStr(priv_asset_id_col_name, rngX.Cells(1, i).Value) > 0 Then
AssetIDCol = i
priv_asset_id_col = i
Exit Property
End If

Next i

AssetIDCol = 0

End Property

如何修复此错误? Get 属性返回一个整数,因此我不确定在创建实例时未能使用 Set 的位置。

最佳答案

出现错误,因为 oAsset 已声明,但未初始化。

修复此问题的最简单方法是编写 Dim oAsset As New clsAsset 而不是 Dim oAsset As clsAsset。这样您就可以在声明时引用一个新对象。

另一种方法是在声明后使用新行显式设置新对象:

Dim oAsset As clsAsset
Set oAsset = New clsAsset

关于excel - 如何将对象传递给 VBA 类获取属性方法而不收到 'Object not Defined' 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58238539/

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