VBA类模块作为工作表
请考虑以下“代码”: 这可能吗?类模块会起作用吗?我尝试了下面的代码,但出现错误438(对象不支持此属性或方法)。有可能吗VBA类模块作为工作表,vba,oop,Vba,Oop,请考虑以下“代码”: 这可能吗?类模块会起作用吗?我尝试了下面的代码,但出现错误438(对象不支持此属性或方法)。有可能吗 'CLASS MODULE CODE: MyWorkingSheet Class Private Sub class_initialize() Me = ActiveSheet End Sub 'NORMAL MODULE CODE Sub MySub() Dim MyTodaySheet As MyWorkingSheet Set MyTodaySheet
'CLASS MODULE CODE: MyWorkingSheet Class
Private Sub class_initialize()
Me = ActiveSheet
End Sub
'NORMAL MODULE CODE
Sub MySub()
Dim MyTodaySheet As MyWorkingSheet
Set MyTodaySheet = New MyWorkingSheet
End Sub
类别:
'CLASS MODULE CODE: MyWorkingSheet Class
Private m_sht As WorkSheet
'set a reference to the worksheet you want to "wrap" with your class
Property Set Sheet(sht As WorkSheet)
Set m_sht = sht
End Property
Sub DeleteAllRedWords()
'in all your class methods reference m_sht
With m_sht.UsedRange
'code to delete all red words
End With
End Sub
'other methods/functions
Tim,既然我的对象是一个工作表,intellisense是否可以同时识别我创建的方法和标准excel工作表方法,并在下拉列表中向我显示所有这些方法?不过,你的对象不是工作表,它只包含一个工作表。如果希望为sheet对象创建Intellisense,则需要创建一个Get
sheet
属性(返回类型工作表)并使用MySheet.sheet.UsedRange
(例如)
Sub MySub()
Dim MySheet As New MyWorkingSheet
Set MySheet.Sheet = ActiveSheet
MySheet.DeleteAllRedWords
'etc
End Sub
'CLASS MODULE CODE: MyWorkingSheet Class
Private m_sht As WorkSheet
'set a reference to the worksheet you want to "wrap" with your class
Property Set Sheet(sht As WorkSheet)
Set m_sht = sht
End Property
Sub DeleteAllRedWords()
'in all your class methods reference m_sht
With m_sht.UsedRange
'code to delete all red words
End With
End Sub
'other methods/functions