Get Form Name in vba module

I have a function in a module that I want to be able to pull in a specific form name. How do I write that in vba code to declare a form and then pull in the form name? I also need to pull in specific controls on that form as well and not really sure how to do that either.
LVL 1
Lawrence SalvucciInformation Technology ManagerAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
mbizupConnect With a Mentor Commented:
You don't need to pass anything else.  If you have the control name, you can get to any of its other properties like this:

'the sub declaration uses the form name as a pass parameter.  The actual form name is specified when calling the sub from wherever needed.  Adding a control here too
Sub  MySub (strForm as string, strControl as string)   
           dim s as string
           s = "the value contained in " & strControl & " On " & strForm & " is: " 
 
          '  The following uses the value property to display the control's value
           msgbox s & Forms(strForm).Controls(strControl).Value

End Sub   

Open in new window


You would call the sub the same way as before:

MySub Me.Name, "txtMyTextboxName"

Open in new window

0
 
mbizupCommented:
This is one way to get a form name to a generic function...

Declare a function or sub like this:

Sub MyFunction(strFormName as string)
     ' use the form
      msgbox Forms(strFormName).Name
End SUb

Open in new window


Call  it like this from a command button (for example) on some form:

MyFunction Me.Name

Open in new window



Controls can be passed and referred to as well... but might  need more detail for more targeted help.
0
 
DatabaseMX (Joe Anderson - Microsoft Access MVP)Database ArchitectCommented:
You can start with this:

Dim frm As Form
Dim sName as String
Set frm = Form_YourFormNameHere

sName = frm.Name
0
Easily Design & Build Your Next Website

Squarespace’s all-in-one platform gives you everything you need to express yourself creatively online, whether it is with a domain, website, or online store. Get started with your free trial today, and when ready, take 10% off your first purchase with offer code 'EXPERTS'.

 
DatabaseMX (Joe Anderson - Microsoft Access MVP)Database ArchitectCommented:
You can also do this. Note that the first example above actually opens a hidden instance of the form, which may not be what you want. This example does not do that.

Dim frm As Form
Dim sName as String
Set frm = Forms!YourFormNameHere

sName = frm.Name
0
 
Boyd (HiTechCoach) Trimmell, Microsoft Access MVPCommented:
I would pass the from object to your function

Example:

Public Function MyFunction(pfrm as Form)
     ' use the pfrm.  like you would use Me.
    
      ' to get the form name use
       MsgBox pfrm.Name

       ' set the Text in a unbound control on the form named txtMessage 
         pfrm.txtMessage =  "My Message Text"

End Function 

Open in new window


In the form call it like this:

MyFunction Me

Open in new window

0
 
Lawrence SalvucciInformation Technology ManagerAuthor Commented:
@DatabaseMX

I like you approach where the form isn't opened in a hidden mode. But now how would I go about pulling a control from a specific record as well?
0
 
DatabaseMX (Joe Anderson - Microsoft Access MVP)Database ArchitectCommented:
define 'Pulling' ...
Also ... you might look at mzipup's approach, wherein you 'pass' the info to a Function ...
0
 
Lawrence SalvucciInformation Technology ManagerAuthor Commented:
Wrong choice of words. I mean pass the values to the function for the current record that is open on the form. I need to pass the recordID and a couple of other controls into my function.
0
 
DatabaseMX (Joe Anderson - Microsoft Access MVP)Database ArchitectCommented:
(mzipup's  - unintentional typo)

then mbizup's approach is what you need ...
0
 
Boyd (HiTechCoach) Trimmell, Microsoft Access MVPConnect With a Mentor Commented:
I would pass the form object to your function in a standard code module. Then you can reference controls on the form like when the VBA code in behind the form.

Example:

Public Function MyFunction(pfrm as Form)
     ' use the pfrm.  like you would use Me.
    
      ' to get the form name use
       MsgBox pfrm.Name

        ' get the recordID from the control txtrecordID.
        MsgBox pfrm.txtrecordID 


End Function 

Open in new window

                                         

In the form call your function in a standard code module it like this:

MyFunction Me

Open in new window

0
 
Lawrence SalvucciInformation Technology ManagerAuthor Commented:
I'm confused about mzipup's function and the msgbox. How does that pass the value from the control and the form's name to my function? That's where I'm getting lost.
0
 
DatabaseMX (Joe Anderson - Microsoft Access MVP)Connect With a Mentor Database ArchitectCommented:
The MsgBox was just an example to display the name that was passed.

To actually pass - you would use what she posted  next:

MyFunction Me.Name

or

Call MyFunction (Me.Name)
0
 
mbizupCommented:
The message box is just an example of a command that uses the form name as passed to the function.

Trying to clarify, and adding a control as a parameter to pass to the sub:


'the sub declaration uses the form name as a pass parameter.  The actual form name is specified when calling the sub from wherever needed.  Adding a control here too
Sub  MySub (strForm as string, strControl as string)   
 
          '  The following shows how to use a string variable to refer to a form (just placing a value on the passed form name and control name)
           Forms(strForm).Controls(strControl) = "This is a test"

End Sub   

Open in new window


You would call the sub from any form like this:

MySub Me.Name, "txtMyTextboxName"

Open in new window

0
 
Lawrence SalvucciInformation Technology ManagerAuthor Commented:
I think I understand now. One final step...how do I pass the value of the control and not just the control name of the current record on my form?
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.