今天因为工作需要,不得不使用VBA在Excel中对数据进行处理,虽然本人有一些编程的经验和逻辑思维能力,但是因为VBA用得少,所以还是费了很多功夫搜索相关的文档。百度上搜索出来的内容参差不齐,感觉都是只言片语,很少有系统化的把VBA讲明白的。尤其是例子感觉有些人说得头头是道,但是都是拷贝粘贴,没有把实践与思考,所以也缺少有说服力的例子。这篇文章也没有办法系统的讲解,但是仅仅是我自己碰到的一些坑,拿来说说。
1、对象的赋值必须用Set语句
经常出现报错“对象变量或With块变量未设置”
例如:
Dim attris As Collection
Set attris = New Collection
2、自定义类必须写在类模块,不能写到模块或者Excel对象中
3、在类模块中自定义类时,注意对象和基本类型在写法上的差异
Private firstLevel
$Public Property Get ReportFirstLevel() As String
ReportFirstLevel = firstLevel
End Property
Public Property Let ReportFirstLevel(ByVal c As String)
firstLevel = c
End Property
但是对象的使用如下:
Dim attris As Collection
Public Property Get AttrisCollection() As Collection
Set AttrisCollection = attris
End Property
Public Property Let AttrisCollection(ByVal c As Collection)
Set attris = c
End Property
这些坑中会遇到定义具有二义性,执行的时候找不到对象,不过参考上面的代码后问题就都解决了。下面是类的方法定义,定义完成后就像系统定义的类一样,能够自由的操作了。
Public Function compareSimilarity(ByVal compareObject As TDimenReport) As Double
最后在调用对象的时候要用Set 变量 = New 自定义对象名,来实例化类