Solved

Get Form Name in vba module

Posted on 2013-11-01
14
2,747 Views
Last Modified: 2013-11-05
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
Comment
Question by:Lawrence Salvucci
  • 5
  • 4
  • 3
  • +1
14 Comments
 
LVL 61

Expert Comment

by:mbizup
ID: 39617671
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
 
LVL 75
ID: 39617680
You can start with this:

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

sName = frm.Name
0
 
LVL 75
ID: 39617685
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
Complete VMware vSphere® ESX(i) & Hyper-V Backup

Capture your entire system, including the host, with patented disk imaging integrated with VMware VADP / Microsoft VSS and RCT. RTOs is as low as 15 seconds with Acronis Active Restore™. You can enjoy unlimited P2V/V2V migrations from any source (even from a different hypervisor)

 
LVL 21
ID: 39617694
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
 
LVL 1

Author Comment

by:Lawrence Salvucci
ID: 39617701
@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
 
LVL 75
ID: 39617720
define 'Pulling' ...
Also ... you might look at mzipup's approach, wherein you 'pass' the info to a Function ...
0
 
LVL 1

Author Comment

by:Lawrence Salvucci
ID: 39617731
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
 
LVL 75
ID: 39617746
(mzipup's  - unintentional typo)

then mbizup's approach is what you need ...
0
 
LVL 21

Assisted Solution

by:Boyd (HiTechCoach) Trimmell, Microsoft Access MVP
Boyd (HiTechCoach) Trimmell, Microsoft Access MVP earned 166 total points
ID: 39617752
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
 
LVL 1

Author Comment

by:Lawrence Salvucci
ID: 39617773
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
 
LVL 75

Assisted Solution

by:DatabaseMX (Joe Anderson - Access MVP)
DatabaseMX (Joe Anderson - Access MVP) earned 167 total points
ID: 39617789
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
 
LVL 61

Expert Comment

by:mbizup
ID: 39617801
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
 
LVL 1

Author Comment

by:Lawrence Salvucci
ID: 39618204
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
 
LVL 61

Accepted Solution

by:
mbizup earned 167 total points
ID: 39618647
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

The Eight Noble Truths of Backup and Recovery

How can IT departments tackle the challenges of a Big Data world? This white paper provides a roadmap to success and helps companies ensure that all their data is safe and secure, no matter if it resides on-premise with physical or virtual machines or in the cloud.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Experts-Exchange is a great place to come for help with solutions for your database issues, and many problems are resolved within minutes of being posted.  Others take a little more time and effort and often providing a sample database is very helpf…
A simple tool to export all objects of two Access files as text and compare it with Meld, a free diff tool.
Familiarize people with the process of utilizing SQL Server views from within Microsoft Access. Microsoft Access is a very powerful client/server development tool. One of the SQL Server objects that you can interact with from within Microsoft Access…
In Microsoft Access, learn the trick to repeating sub-report headings at the top of each page. The problem with sub-reports and headings: Add a dummy group to the sub report using the expression =1: Set the “Repeat Section” property of the dummy…

803 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question