Results 1 to 2 of 2
  1. #1
    Join Date
    May 2002
    Thanked 0 Times in 0 Posts

    Confused about Me. (XP)

    Can Someone please explain why some VBA needs 'Me' before it and some don't. I've got the Microsoft Step-by-Step book for Access VBA, and it's got an example in it that I thought would need the 'Me' statement before it, but it doesn't and yet it works. Here's the code:

    Private Sub FirstName_AfterUpdate() 'Copy the Firstname value to the Dear control
    If IsNull(Dear) Then
    Dear = FirstName
    End If
    End Sub

    Why doesn't Dear need to be written as Me.Dear when the following statement DOES require 'Me'

    Private Sub ContactTypeID_DblClick(Cancel As Integer)
    On Error GoTo Err_ContactTypeID_DblClick
    Dim lngContactTypeID As Long

    If IsNull(Me![ContactTypeID]) Then
    Me![ContactTypeID].Text = ""
    lngContactTypeID = Me![ContactTypeID]
    Me![ContactTypeID] = Null
    End If

    In both instances, all the controls are on the same part of the Form, so I can't understand why the first one Does NOT require Me and the second one does????

    Also, in the second example, the statement is written as . . .

    Again, how come the first statement didn't need to be written as . . .

    Me.[Dear].Text =FirstName

    This is confusing me, and I'd really appreciate any help or explanation someone may have
    Thanks in advance.


  2. #2
    Plutonium Lounger
    Join Date
    Mar 2002
    Thanked 28 Times in 28 Posts

    Re: Confused about Me. (XP)

    This can be rather confusing, you can use several ways of denoting controls almost interchangeably.
    <UL><LI>If you refer to something without qualifying what it belongs to, VBA will try to resolve it. On a form or report, it will assume that it belongs to the form or report.
    <LI>In a class module, Me refers to the instance of the class that is running the code.
    <LI>A form or report acts as a class; the module behind the form or report is a class module, so Me refers to the form or report running the code.
    <LI>The dot <big>.</big> is used to designate a property, while the bang <big>!</big> designates a member of a collection.
    <LI>The default property of a form or report is its Controls collection. You don't need to name the default property explicitly.[/list]Are you still there? This means that the following expressions are all valid ways to refer to a text box named txtLastName:


    In your first example, you could have used Me.Dear or Me!Dear instead of just Dear, and the second example should work as well with Me.ContactTypeID or even ContactTypeID instead of Me!ContactTypeID.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts