作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
将工作表传递给类对象方法时,我收到:
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/
我是一名优秀的程序员,十分优秀!