Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何将对象传递给VBA类Get属性方法而不接收';对象未定义';错误?_Excel_Vba - Fatal编程技术网

Excel 如何将对象传递给VBA类Get属性方法而不接收';对象未定义';错误?

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”变量时出错。以下是我

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

错误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”变量时出错。以下是我的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
。请查看有关这两个选项的一些想法。