Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Excel / Programming / January 2006

Tip: Looking for answers? Try searching our database.

Copying TextBox entry from one UserForm to another

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
excelnut1954 - 20 Jan 2006 14:57 GMT
When UserForm4 comes up, the user enters data in TextBox1. When the
user completes UserForm4, he clicks Next, and UserForm6 comes up. I
would like the number entered in TextBox1 of UserForm4 to automatically
populate TextBox7 of UserForm6.
Can this be done?

Thanks,
J.O.
Kris - 20 Jan 2006 15:24 GMT
> When UserForm4 comes up, the user enters data in TextBox1. When the
> user completes UserForm4, he clicks Next, and UserForm6 comes up. I
[quoted text clipped - 4 lines]
> Thanks,
> J.O.

' ------------------------------define this to constant somewhere
public const CancelClicked = 0
public const NextClicked = 1

'----both user form code

Option Explicit

Private m_bResult As Boolean
Property Get Result() As Boolean
    Result = m_bResult
End Property

Private Sub btnCancel_Click()
    m_bResult = CancelClicked
    Hide
End Sub
Private Sub btnNext_click()
    If Not ValidateUserInput() Then Exit Sub
    m_bResult = NextClicked
    Hide
End Sub

Private Function ValidateUserInput() As Boolean
   ValidateUserInput = False

 'if data don't fit criteria then exit function

   ValidateUserInput = True

End Function

' -------------- your module code

load UserForm4
UserForm4.Show

if UserForm4.Result = NextClicked then
  load UserForm6
  UserForm6.TextBox7.value = userForm4.TextBox1.value
  UserForm6.Show
  '  do something with values from UserForm6
  unload userForm6
end if
unload UserForm4

-------------------------
The clue is that data are initiated  and processed in parent module not
in user form directly.
Initiated after loading user form , processed after returning from .show

In general user form shouldn't interact with data which is not a part of
user form.
Everything can be done in parent module after hiding user form.

Try to not have unload me in your user form and you'll see that
everything becomes simpler.
excelnut1954 - 22 Jan 2006 20:40 GMT
I sure do appreciate your help. But, I really don't know where to put
all this code. Some of it makes sense, but I just don't know where it
goes. I've tried putting it all into a seperate Module, but it isn't
right. Guess I'm not experienced enough to understand the terminology.
Thanks,
J.O.
excelnut1954 - 22 Jan 2006 21:30 GMT
I'm sure the code Kris entered above is correct.

But, is there anyone who can simplify it? What I want seems do be just
a simple Copy & Paste situation. I know that's not how this all works,
but there has to be a simplier way to do this.

I just want TextBox7 of UserForm6 to automatically be what was just
entered in TextBox1 of UserForm4.

Can anyone help?
Tom Ogilvy - 22 Jan 2006 22:14 GMT
In a general module, put in code like

Public myvar as String

in Userform4 code module put in

Sub TextBox1_Change()
 myvar = Textbox1.Value
End sub

In Userform6 code module

Private Sub Userform_Activate()
 Textbox7.Value = MyVar
End Sub

Signature

Regards,
Tom Ogilvy

> I'm sure the code Kris entered above is correct.
>
[quoted text clipped - 6 lines]
>
> Can anyone help?
excelnut1954 - 23 Jan 2006 14:11 GMT
Thanks, Tom.
This seems simple enough. I put the code in UserForms 4 & 6 as you
directed.
1 question. The 1st part of your solution:
***************************************
In a general module, put in code like

Public myvar as String
****************************************

I'm still unclear on this statement.  I tried putting it in a seperate
module like this      Public myvar as String()
But, that's not correct. I put it in as a single line code in a Module
called  Sub Macro1()
But, I don't see how the statement gets implemented. I tried calling
this  Macro1 from another Module, then calling UserForm4 to start the
process. But, data from TextBox1 of UserForm4 still doesn't paste to
TextBox7 of UserForm6.
Just what do I do with the Public myvar... statement?

I appreciate your time and patience.
J.O.
excelnut1954 - 23 Jan 2006 15:12 GMT
Just some more info on what I have already, that may effect what I'm
trying to do now. There is already code in UserForm4 that makes sure
the entry of TextBox1 isn't already on the list. I want to make sure
this isn't conflicting with what I'm trying to do above. Trying to
cover all bases. Is there a problem with having code in both of the
subs shown below for TextBox1? A "change" sub, and an "exit" sub. Here
are the 2 subs.

('This is the code you had me put in, that would help auto enter the
value in UserForm6)
Private Sub TextBox1_Change()
 myvar = TextBox1.Value

End Sub

(This is code I had in there already, to make sure of no duplicates
resulting from entry of TextBox1)
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'This will check to make sure the user entry is not already on
'the list. If so, message box comes up.

With Worksheets("Official list")
If TextBox1.Text <> "" And Not .Range("j:j").Find(TextBox1.Text,
LookIn:=xlValues, lookat:=xlWhole, MatchCase:=False) Is Nothing Then
   MsgBox "This PO/PL is already on the list. Please enter the
information in the existing Record."
   TextBox1.Text = Clear
   Cancel = True
 
End If
End With

End Sub
excelnut1954 - 23 Jan 2006 19:12 GMT
OK... I got it. Fooled around, and with some more reading, I found out
about the Declaration part of a Module. WHEW.
I really appreaciate the help!!
J.O.
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.