arrays - 使用数组作为新对象不起作用
问题描述
我的 VBA 代码出了问题。我用属性创建了一个名为“clsColl”的类模块。当我将变量声明为“clsColl”时,一切正常,但是当我将数组声明为“clsColl”时,如果我在另一个子程序中使用此数组,我会收到错误“对象变量或未设置块变量”,我称之为在第一个子。
我做了一个简短的例子,里面的代码很麻烦。
首先是我的班级模块“clsColl”
Option Explicit
Public name As String
Public weight as single
现在正在运行的代码
Sub workingA()
Dim persona As New clsColl
Call workingB(persona)
End Sub
Sub workingB(persona As cls Coll)
persona.name = "phil"
persona.weight = 100
End Sub
现在代码不起作用
Sub failingA()
Dim persona() As New clsColl
ReDim persona(1 to 5)
Call failingB(persona)
End Sub
Sub failingB(persona() As cls Coll)
persona(1).name = "phil"
persona(1).weight = 100
End Sub
我得到一个错误,只是将我的代码从使用变量更改为使用数组。
现在我在第二个代码中得到一个错误对象变量或未设置块变量”,但我不知道为什么。我想知道为什么使用数组作为对象会造成这样的麻烦,而使用普通变量是工作正常。
解决方案
你的代码行
Dim persona As New clsColl
是一个组合
Dim persona As clsColl
If persona Is Nothing Then Set persona = New clsColl
至少在我看来,使用这种组合语法是不好的做法。
现在对于数组,这不能再工作了,因为每个数组项必须首先Set
是一个clsColl
对象:
Sub notMorefailingA()
Dim persona() As clsColl
Dim i As Integer
ReDim persona(1 To 5)
For i = 1 To 5
Set persona(i) = New clsColl
Next
Call notMorefailingB(persona)
End Sub
Sub notMorefailingB(persona() As clsColl)
persona(1).name = "phil"
persona(1).weight = 100
End Sub
推荐阅读
- debian-buster - Debian buster 和 libgfortran3
- git - npm 和 git 需要发布“node_modules”(依赖)?
- java - 尽管库包含在 pom 中,但在 maven 项目中找不到类
- c++ - 如何记录 C++20 模块中的功能?
- selenium-webdriver - 在 selenium 中不是有效的 xpath 表达式问题
- r - 更新到 macOS Catalina (10.15) 后出现 Rmarkdown Pandoc 错误
- sql - 如何将一个大字符串合并为一个单词之间没有空格的字符串?
- swift - App Store Receipts 字段中缺少“product_id”
- sql - ASP.NET Windows 身份验证 - 用户“NT AUTHORITY/ANONYMOUS LOGON”登录失败
- javascript - 当我使用 Python (Windows 10) 发送本地文件地址时,我试图找到一种让浏览器读取我的 URL 参数的方法