【发布时间】:2019-01-22 21:33:16
【问题描述】:
1.简介
这是我的第一个 VBA 项目,也是我的第一篇文章。所以请原谅我,如果…… 它尝试了我在网上能找到的所有东西,我现在能想到几天,最后放弃了。 我以我理解网络建议的方式做了几个类的实现。不幸的是,这个(但其他的)不起作用。如果我放弃使用 PRIVATE 的数据封装,它会起作用,但似乎不是干净的编程。 我复制了下面代码的基本部分。这应该足以重现错误 (91)。 我希望有人知道一些魔术字符。估计也不算多。
提前致谢, 骑马
2。基础设施
PC:Win7Enterprise-64 SP1、Excel 365 ProPlus-32 (1808)
3。代码
类模块
Option Explicit
Private resWrkBook As Workbook 'resultXLS - Result workbook
‘Properties
Public Property Let resultXLS(ByVal resultXLS As Workbook) 'Write value to class variable
Set resWrkBook = resultXLS 'Assign value to property
End Property
Public Property Get resultXLS() As Workbook 'Read value from class variable
Set resultXLS = resWrkBook 'Return value from property
End Property
编程模块
Option Explicit
Public Sub main()
Dim wbs As XlsClass_Module 'declaration
‘Short (version S)
Set wbs.resultXLS = Workbooks.Add '=> Error 91
‘Long (version L, alternative)
Dim wrk As Workbook
Set wbs = New XlsClass_Module 'instance of Workbook Class
Set wrk = Workbooks.Add
Set wbs.resultXLS = wrk '=> Error 91
End Sub
【问题讨论】:
-
将
Public Property Let resultXLS(ByVal resultXLS As Workbook)的行更改为Public Property Set resultXLS(ByVal resultXLS As Workbook),它应该可以工作。 -
不幸的是,这并没有解决它。到目前为止,我使用 Let 和 Get 来封装所有班级成员(正如我从网上了解到的那样)并且它有效。我刚刚测试了你的方法。结果(错误 91)不幸的是和以前一样。
-
糟糕...改成
Public Property Set resultXLS(ByRef resultXLS As Workbook)。 -
对不起,我尽力了,但仍然出现同样的错误。我在调查中看到的是,将新工作簿分配给类变量肯定有问题。但我不知道如何解决它。