• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 3769
  • Last Modified:

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.
0
Lawrence Salvucci
Asked:
Lawrence Salvucci
  • 5
  • 4
  • 3
  • +1
3 Solutions
 
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 MVP, Access and Data Platform)Commented:
You can start with this:

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

sName = frm.Name
0
 
DatabaseMX (Joe Anderson - Microsoft MVP, Access and Data Platform)Commented:
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
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
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 MVP, Access and Data Platform)Commented:
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 MVP, Access and Data Platform)Commented:
(mzipup's  - unintentional typo)

then mbizup's approach is what you need ...
0
 
Boyd (HiTechCoach) Trimmell, Microsoft Access MVPCommented:
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 MVP, Access and Data Platform)Commented:
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
 
mbizupCommented:
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

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 5
  • 4
  • 3
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now