本主题的部分内容不适用于某些语言。
类模块的 Initialize 事件将在创建类模块的实例时发生。若要在 Initialize 事件发生时运行代码,必须将代码放在类模块的 Initialize 事件过程中。
Private Sub Class_Initialize( )
Initialize 事件可在执行以下操作时发生:
当创建一个类的实例或初始化类实例所使用的任何数据时,均可以使用该事件过程来运行代码。
Initialize 事件将在使用 New 关键字创建一个类的新实例时发生。例如,如果有一个名为 CustomObject 的类。可以将代码添加到用于新建 CustomObject 类实例的标准模块中,如下面的示例所示:
Dim obj As CustomObject
Set obj = New CustomObject
运行包含该代码的过程时,Visual Basic 会创建 CustomObject 类的一个新实例,并触发 Initialize 事件。
如果使用 New 关键字声明对象变量,则当通过设置或返回一个属性或应用类模块中定义的方法来创建类的实例时,发生 Initialize 事件。例如,如果在 CustomObject 类模块中定义了一个名为 ListNames 的 Function 过程。若要从其他模块中运行这个函数,必须使用类模块名称完整地引用该函数,如下面的示例所示:
CustomObject.ListNames
如果对具有某类模块名称的函数限定资格,就会创建该类模块的实例,并触发 Initialize 事件。
下面的示例包含 ItemAdded 与 ItemRemoved 事件的事件过程。若想运行该示例,可单击“插入”菜单上的“类模块”,然后将下列代码粘贴到类模块中,并将类模块保存为 RefEvents:
' Declare object variable to represent References collection.
Public WithEvents evtReferences As References
' When instance of class is created, initialize evtReferences
' variable.
Private Sub Class_Initialize()
Set evtReferences = Application.References
End Sub
' When instance is removed, set evtReferences to Nothing.
Private Sub Class_Terminate()
Set evtReferences = Nothing
End Sub
' Display message when reference is added.
Private Sub evtReferences_ItemAdded(ByVal Reference As _
Access.Reference)
MsgBox "Reference to " & Reference.Name & " added."
End Sub
' Display message when reference is removed.
Private Sub evtReferences_ItemRemoved(ByVal Reference As _
Access.Reference)
MsgBox "Reference to " & Reference.Name & " removed."
End Sub
以下的 Function 过程可用来添加一个特定的引用。在添加引用时,将执行 RefEvents 类中定义的 ItemAdded 事件过程。
例如,如果要将引用设置为日历控件,可以传递“C:\Windows\System\Mscal.ocx”字符串作为过程的参数,不过该字符串必须是日历控件在计算机上的正确位置。
' Create new instance of RefEvents class.
Dim objRefEvents As New RefEvents
' Pass file name and path of type library to this procedure.
Function AddReference(strFileName As String) As Boolean
Dim ref As Reference
On Error GoTo Error_AddReference
' Create new reference on References object variable.
Set ref = objRefEvents.evtReferences.AddFromFile(strFileName)
AddReference = True
Exit_AddReference:
Exit Function
Error_AddReference:
MsgBox Err & ": " & Err.Description
AddReference = False
Resume Exit_AddReference
End Function
下一个 Function 过程删除指定的引用。当删除引用时,将执行 RefEvents 类中定义的 ItemRemoved 事件过程。
例如,如果要删除对日历控件的引用,可以传递 "MSACAL" 字符串作为过程的参数。该字符串是代表日历控件的 Reference 对象的名称。
Function RemoveReference(strRefName As String) As Boolean
Dim ref As Reference
On Error GoTo Error_RemoveReference
' Return object representing existing reference.
Set ref = objRefEvents.evtReferences(strRefName)
' Remove reference from collection.
objRefEvents.evtReferences.Remove ref
RemoveReference = True
Exit_RemoveReference:
Exit Function
Error_RemoveReference:
MsgBox Err & ": " & Err.Description
RemoveReference = False
Resume Exit_RemoveReference
End Function