全部显示

Me 属性

     

可以在 Visual Basic 中使用 Me 属性来引用当前正在运行 Visual Basic 代码的窗体报表(或与窗体或报表相关联的子窗体子报表),或类模块

设置

Me 属性仅在使用 Visual Basic 时才可用,并且在所有视图中都是只读的。

说明

Me 属性中含有对当前窗体或报表的对象引用,并且比完全限定的对象引用要快。例如,下列两个代码片段为“Employees”窗体中的当前记录引用“LastName”控件值:

strLastName = Forms!Employees.LastName
strLastName = Me!LastName

在多数情况下,由 Me 属性引用的窗体或报表与由 Screen 对象的 ActiveFormActiveReport 属性引用的窗体或报表相同。但是,这些属性引用的是具有焦点的窗体或报表,而 Me 属性引用的则是正在运行代码的窗体或报表。例如,Timer 事件可能会在没有焦点的窗体中发生。该事件发生时,代码 Screen.ActiveForm 引用具有焦点的窗体,而 Me 属性引用 Timer 事件发生的窗体。因而,创建在当前窗体上进行操作的一般过程时,最好的方法是通过 Me 属性而非 ActiveForm 属性,将窗体传递给过程。

在类模块中可以使用 Me 关键字来引用类的当前实例。与在窗体或报表类模块中使用 Me 来检索对当前窗体或报表的引用相似,也可以在类模块中使用 Me 来检索对当前类模块对象的引用。

示例

下面的示例显示如何将“客户”窗体的标题改为用户提供的值。ChangeCaption 子程序通过传递 Me 属性(代表 Form 对象)来指定活动的窗体。因为 ChangeCaption 过程更改的是活动窗体的标题(而不是特定的窗体),它可以从应用程序中的其他过程中调用。

ChangeCaption Me, InputBox("Enter new caption "
    & "for form")

Sub ChangeCaption(frmCurrentForm As _
    Form, strCaption As String)
' Change caption.
    If TypeName(frmCurrentForm.Caption) = "Null" Then
        frmCurrentForm.Caption = strCaption
        Exit Sub
    End If
    If UCase(strCaption) _
            <> UCase(frmCurrentForm.Caption) Then
        frmCurrentForm.Caption = strCaption
    End If
End Sub