Excel 如何将对象传递给VBA类Get属性方法而不接收';对象未定义';错误?
将工作表传递给类对象方法时,我收到: 错误91:未设置对象变量或带块变量 问题是,我不知道它在哪里,我没有设置对象Excel 如何将对象传递给VBA类Get属性方法而不接收';对象未定义';错误?,excel,vba,Excel,Vba,将工作表传递给类对象方法时,我收到: 错误91:未设置对象变量或带块变量 问题是,我不知道它在哪里,我没有设置对象 Dim WS As Worksheet Set WS = oExport.ExportSheet(oExport.WB) Dim testint As Integer Dim oAsset As clsAsset testint = oAsset.AssetIDCol(WS) 我已经检查了,并且在代码的第2行中正确设置了工作表对象。将值赋给“testint”变量时出错。以下是我
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作为新的clsAsset写入,而不是Dim oAsset作为clsAsset写入。这样,您在声明时引用了一个新对象
另一种方法是在声明新行后,使用新行显式设置新对象:
Dim oAsset As clsAsset
Set oAsset = New clsAsset
oAsset
是Nothing
。请查看有关这两个选项的一些想法。