Workbooks.Add 工作簿在 Class
Workbooks.Add with Workbook in Class
1.Intro
这是我的第一个 VBA 项目,也是我的第一个 post。所以请原谅我,如果……
它尝试了我在网上能找到的所有东西,我想了好几天,最后放弃了。
我以我理解网络推荐的方式做了几个 class 实现。不幸的是,这个(但其他的)不起作用。如果我放弃使用 PRIVATE 的数据封装它会工作,但似乎不是干净的编程。
我复制了下面代码的重要部分。这应该足以重现错误 (91)。
我希望有人知道一些神奇的字符。我想应该不多吧。
提前致谢,
芒提
2。基础设施
PC:Win7Enterprise-64 SP1,Excel365 ProPlus-32 (1808)
3。代码
Class 模块
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
这是工作的 class 模块和工作的主要代码。请看以下代码:
Option Explicit
Private resWrkBook As Workbook 'resultXLS - Result workbook
'Properties
Public Property Set 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
现在,需要更改的调用代码(注意 NEW 关键字):
Public Sub main()
Dim wbs As XlsClass_Module 'declaration
Set wbs = New XlsClass_Module
'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
此外,对于您使用 SET 的变量,您需要将它们设置为空,以便释放内存:
EX: set wbs = Nothing
1.Intro
这是我的第一个 VBA 项目,也是我的第一个 post。所以请原谅我,如果…… 它尝试了我在网上能找到的所有东西,我想了好几天,最后放弃了。 我以我理解网络推荐的方式做了几个 class 实现。不幸的是,这个(但其他的)不起作用。如果我放弃使用 PRIVATE 的数据封装它会工作,但似乎不是干净的编程。 我复制了下面代码的重要部分。这应该足以重现错误 (91)。 我希望有人知道一些神奇的字符。我想应该不多吧。
提前致谢, 芒提
2。基础设施
PC:Win7Enterprise-64 SP1,Excel365 ProPlus-32 (1808)
3。代码
Class 模块
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
这是工作的 class 模块和工作的主要代码。请看以下代码:
Option Explicit
Private resWrkBook As Workbook 'resultXLS - Result workbook
'Properties
Public Property Set 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
现在,需要更改的调用代码(注意 NEW 关键字):
Public Sub main()
Dim wbs As XlsClass_Module 'declaration
Set wbs = New XlsClass_Module
'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
此外,对于您使用 SET 的变量,您需要将它们设置为空,以便释放内存:
EX: set wbs = Nothing