我正在编写一些用于安排自动化的代码。我对VBA编程比较陌生,但多年来一直用其他语言编程。对于我的项目,我创建了一个名为OpsFloor的类,它应该模拟操作层。我正在将用户信息解析为一个数组并尝试传递该数组(我已尝试将整个数组和各个值传递)到OpsFloor对象的实例中。我担心我对VBA中的类如何工作有一些根本的误解。下面是Class
中的subPublic Sub SetProcessMatrixValue(x As Integer, y As Integer, value As Integer)
ProcessMatrix(x, y) = value
End Sub
以下是Excel中工作表对象子中的调用:
Option Explicit
Private OperationMatrix(18, 8) As Integer
Private dailyWF As New OpsFloor
Public Sub StartingWorksheet()
...
dailyWF.SetProcessMatrixValue 0, 0, 30
End Sub
当我尝试运行sub以通过SetProcessMatrixValue方法将这些值分配给类实例时,我得到运行时错误'''对象不支持此属性或方法。
答案 0 :(得分:1)
所以我有几个问题,在拼凑了很多不同的帖子后我设法发现了。
首先是我最初宣布我的类变量的方式:
Private dailyWF As New OpsFloor
这没有正确实例化类对象。当我尝试将其更改为以下内容时:
Private dailyWF As New OpsFloor
Set dailyWf = New Operations_Floor
我收到一个错误,指向我的类构造函数。它最终成为我如何将对象分配给集合的问题。
newCollection.Add(new Object) //WRONG!
newCollection.Add new Object //Right!
对于像我这样的其他新手,我发现了一篇帖子,建议通过工具>选项>一般>类课程中断来启用“打破课程模块”。这向我展示了错误是在类构造函数内部,而实际上并不是我打电话的方式的问题。