【发布时间】:2017-03-29 10:26:58
【问题描述】:
我正在编写一些用于调度自动化的代码。我对 VBA 编程比较陌生,但多年来一直在用其他语言编程。对于我的项目,我创建了一个名为 OpsFloor 的类,它应该模拟操作层。我正在将用户信息解析为一个数组并尝试将该数组(我尝试过将整个数组和单个值都传递)传递到 OpsFloor 对象的一个实例中。我担心我对 VBA 中的类如何工作有一些基本的误解。下面是类中的子
Public Sub SetProcessMatrixValue(x As Integer, y As Integer, value As Integer)
ProcessMatrix(x, y) = value
End Sub
这是来自 Excel 中工作表对象 sub 内的调用:
Option Explicit
Private OperationMatrix(18, 8) As Integer
Private dailyWF As New OpsFloor
Public Sub StartingWorksheet()
...
dailyWF.SetProcessMatrixValue 0, 0, 30
End Sub
当我尝试运行子程序以通过 SetProcessMatrixValue 方法将这些值分配给类实例时,我得到运行时错误“438”对象不支持此属性或方法。
【问题讨论】:
-
对不起,我是个菜鸟,但我不确定你从哪里得到的代码。
-
抱歉,那是我的代码 :) 是否发生在
dailyWF.SetProcessMatrixValue 0, 0, 30行上 -
我真的想通了。由于构造函数代码中的错误,我的类没有正确实例化,但是因为我使用了
Private dailyWF As New OpsFloor而不是Dim dailyWF As OpsFloor:Set dailyWF = New OpsFloor一旦我切换它,它就指向了构造函数中的错误(添加到集合时不必要的括号) 现在它运行完美。