Textbox in Userform not recognised by Module
From a programmer's perspective, if your sub procedure requires a
value or an object then pass it in as a parameter. Give you're sub
procedure an argument. If your sub procedure just needs the text, pass
in the text e.g.
Public Sub MyMacro(ByVal Text As String)
' <Do something with Text here
End Sub
Private Sub cmdRun_Click()
MyMacro txtTest.Text
End Sub
However, if your sub procedure needs to operates on the textbox object
itself, then use the textbox as the argument (i.e. pass a pointer to
the textbox) e.g.
Public Sub MyMacro(ByVal oTextBox As MSForms.TextBox)
' <Do something with oTextBox here
End Sub
Private Sub cmdRun_Click()
MyMacro txtTest
End Sub
--
Rich J wrote in message ...
The Modules don't recognize the controls on a Userform. There are several things you can do.
1) Put the MyMacro code in the Userform code.
or
2) Pick a cell on the worksheet to pass the value to. Then pick it up from sheet in MyMacro
Private Sub txtTest_Change() Instead of this sub you could also set the ControlSource for
range("A1") = txtTest.value the textbox in the userform to a particular cell in the worksheet.
End Sub Just put A1 in the controlsource line in the properties window.
Sub MyMacro()
Dim strTest as String
strTest = range("A1")
.
.
3) Probably the best way is to add the variable to your macro name
This assumes MyMacro is on Module1
Sub MyMacro (str)
strTest = str
end sub
' The code on your userform could look like this
Private Sub cmdRun_Click()
Dim Temp as string
Temp = txtTest.value
If Temp < vbNullString then ' This would not let the macro to be called if the textbox was empty
Module1.MyMacro Temp ' If you add the variable to the macro name on Module1 then as soon
end if ' as you type ' Module1. ' on the userform code, you should see a window open
End Sub ' with MyMacro as a choice. Then when you add that and have Module1.MyMacro
' you should see str meaning that a value needs to be in the line. Temp will
' pass the value to str
I hope I'm being clear for you. I'm not a programmer but I've been doing a lot with Userforms
|