excel 可不可以在VBA类模块里设置动态数组作为属性,然后在标准模块中给这个动态数
展开全部
类模块的编写跟日常写代码的编程思想有很大反差,类模块的主题是创建,而日常的代码是使用。
类模块里是禁止使用Public类型的动态数组作为模块级变量的,而私有级的变量外界不可直接调用,那么也失去了数组的意义。
因为通过类模块创建的实例,我们通常称之为对象,而纵观Applicaiton集合对象,Range集合对象,Addins集合对象,等等各种对象,似乎官方总会给予一个“集合”概念。实际上,这里的“集合”就相当于一个动态数组,比如WorkBooks(1)就返回第一个工作簿,WorkSheets(2)就返回第二个工作表,这个不正是动态数组所需要表达的意义么!?
所以,建议你尝试使用Collect对象,来实现类似于动态数组的功能。给你一个参考示例:
Rem -==巴蜀兄弟连==- 团队提供支持
Public Arr As New Collection
Public Function Add(ByRef R As Range) As Range
Set Add = R '创建对参数R对应单元格的引用
Arr.Add Add '将建立的引用实例添加到Arr集合
End Function
然后标准模块创建实例,并返回集合元素的值:
Private mm As New unsamesky '创建类模块unsamesky的一个实例mm
Private Sub xx()
Dim i As Long
For i = 1 To 10
mm.Add Sheet1.Cells(i, 1) '给A1到A10单元格添加到mm实例的Arr集合中
Next
End Sub
Sub yy()
Call xx '调用xx
MsgBox mm.Arr(3) '试试返回集合的第3个元素,也就是工作表的第A3单元格的内容!
End Sub
可使用附件测试:
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |