Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2
Default Pass public variable from one userform to a second...

Been Googling all night and just can't seem to find the fix for this
problem (unlikely, but true...) Maybe one of the experts can help if I
am able to ask the question in an understandable way.

The offending section...

--In standard module:
Public PW,UN, APPSTRING as String
Sub OpenWorkbook()
'initialize public variables
APPSTRING = ThisWorkbook.Worksheets("SundaySheet").Range
_("APPSTRING").Value
PW = ThisWorkbook.Worksheets("SundaySheet").Range("PW") .Value
UN = ThisWorkbook.Worksheets("SundaySheet").Range("UN") .Value
'setup the app
UnprotectSheets
frmSplash.Show
---other setup stuff goes here
ProtectAll 'protect the sheets and workbook for vba operation
End Sub

Sub ShowAdminPW()
frmAdminPW.Show
End Sub

--In frmSplash

Sub CommandButton1_Click()
Unload Me
ShowAdminPW 'call the show method from the module
End Sub

--In frmAdminPW
(Contains TextBox1, TextBox2, CommandButton1, CommandButton2)
(User enters text into TextBox1 & TextBox2, tabs to CommandButton1)

Private Sub UserForm_Initialize() 'initialize the AdminPW form
TextBox1.Text = ""
TextBox2.Text = ""
TextBox1.SetFocus
End Sub

Private Sub CommandButton1_Click()'check the data against the variables
UN2 = TextBox1.Text
PW2 = TextBox2.Text

Select Case UN 'check the username entry for correctness
Case Is < UN2
MsgBox "Incorrect username entered. Please start again!"
TextBox1.Text = "" 'start over
TextBox1.SetFocus
TextBox2.Text = ""
Exit Sub
End Select

Select Case PW
Case Is < PW2
MsgBox "Please enter the correct password!"
TextBox2.Text = "" 'try again
TextBox2.SetFocus
Exit Sub
End Select

MsgBox "Entering Adminstrator Mode.", vbInformation, APPSTRING
Unload Me
---Administrator Mode code goes here
End Sub

Private Sub CommandButton2_Click()
MsgBox "Cancelling attempt to enter Adminstrator Mode.",
vbInformation, APPSTRING 'this public variable is passed successfully
TextBox1.Text = ""
TextBox2.Text = ""
Unload Me
End Sub


Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As
Integer)
'prevent user from closing with close box, force my cleanup with cancel
button
If CloseMode < 1 Then Cancel = 1
End Sub

The objective is to store UN, PW & APPSTRING in the sheet named
SundaySheet using Names, declare these as Public Variables, set their
values and pass these to the form for use in validating a username and
password in a logon form (frmAdminPW)

This code fails to pass the Public variables UN & PW to the
CommandButton1_Click event in the frmAdminPW, but it successfully
passes the Public Variable APPSTRING to the MsgBox Title row at the end
of the sub. Hmmmm.

Problem can be fixed by declaring the variables UN & PW in the Click
event of the CommandButton1, making them local.

I have copied some example code from the group that successfully passes
Public Variables from the module to forms, but I cannot correct my code
& make it work. I hope I have explained this well enough to be
understood...

Any help that anyone can offer is greatly appreciated.

Mike Dunworth

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1,298
Default Pass public variable from one userform to a second...

in your code PW and UM are variant
Public PW,UN, APPSTRING as String

try
Public PW as String,UN as String, APPSTRING as String

Also, its unsafe to save these two this way...allow the user to enter their
names and password, then test...it sfairly easy to break the code while the
form is showing, and then check the variables for their values, thus
revealing the UN & PW.

I made two changes - I always set Option Explicit as the first line of code
modules - a big help in stopping variable name typos...and also added one
line in frmAdminPW ...

Private Sub CommandButton1_Click() 'check the data against the variables
Dim UN2 As String, PW2 As String ' new

apart from these, your code worked ok for me.


"Mike Dunworth" wrote:

Been Googling all night and just can't seem to find the fix for this
problem (unlikely, but true...) Maybe one of the experts can help if I
am able to ask the question in an understandable way.

The offending section...

--In standard module:
Public PW,UN, APPSTRING as String
Sub OpenWorkbook()
'initialize public variables
APPSTRING = ThisWorkbook.Worksheets("SundaySheet").Range
_("APPSTRING").Value
PW = ThisWorkbook.Worksheets("SundaySheet").Range("PW") .Value
UN = ThisWorkbook.Worksheets("SundaySheet").Range("UN") .Value
'setup the app
UnprotectSheets
frmSplash.Show
---other setup stuff goes here
ProtectAll 'protect the sheets and workbook for vba operation
End Sub

Sub ShowAdminPW()
frmAdminPW.Show
End Sub

--In frmSplash

Sub CommandButton1_Click()
Unload Me
ShowAdminPW 'call the show method from the module
End Sub

--In frmAdminPW
(Contains TextBox1, TextBox2, CommandButton1, CommandButton2)
(User enters text into TextBox1 & TextBox2, tabs to CommandButton1)

Private Sub UserForm_Initialize() 'initialize the AdminPW form
TextBox1.Text = ""
TextBox2.Text = ""
TextBox1.SetFocus
End Sub

Private Sub CommandButton1_Click()'check the data against the variables
UN2 = TextBox1.Text
PW2 = TextBox2.Text

Select Case UN 'check the username entry for correctness
Case Is < UN2
MsgBox "Incorrect username entered. Please start again!"
TextBox1.Text = "" 'start over
TextBox1.SetFocus
TextBox2.Text = ""
Exit Sub
End Select

Select Case PW
Case Is < PW2
MsgBox "Please enter the correct password!"
TextBox2.Text = "" 'try again
TextBox2.SetFocus
Exit Sub
End Select

MsgBox "Entering Adminstrator Mode.", vbInformation, APPSTRING
Unload Me
---Administrator Mode code goes here
End Sub

Private Sub CommandButton2_Click()
MsgBox "Cancelling attempt to enter Adminstrator Mode.",
vbInformation, APPSTRING 'this public variable is passed successfully
TextBox1.Text = ""
TextBox2.Text = ""
Unload Me
End Sub


Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As
Integer)
'prevent user from closing with close box, force my cleanup with cancel
button
If CloseMode < 1 Then Cancel = 1
End Sub

The objective is to store UN, PW & APPSTRING in the sheet named
SundaySheet using Names, declare these as Public Variables, set their
values and pass these to the form for use in validating a username and
password in a logon form (frmAdminPW)

This code fails to pass the Public variables UN & PW to the
CommandButton1_Click event in the frmAdminPW, but it successfully
passes the Public Variable APPSTRING to the MsgBox Title row at the end
of the sub. Hmmmm.

Problem can be fixed by declaring the variables UN & PW in the Click
event of the CommandButton1, making them local.

I have copied some example code from the group that successfully passes
Public Variables from the module to forms, but I cannot correct my code
& make it work. I hope I have explained this well enough to be
understood...

Any help that anyone can offer is greatly appreciated.

Mike Dunworth


  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2
Default Pass public variable from one userform to a second...

Thanks for the quick and complete reply. Your changes solved my problem
immediately.

A followup question, if I may?

What might you recommend as a safer construction for a logon process?

Thanks again!

Mike Dunworth

Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Get contacts from Public folders into a userform Oggy Excel Discussion (Misc queries) 0 March 22nd 07 10:33 PM
Public variable Jack New Users to Excel 4 March 18th 06 09:35 PM
Using Public to Pass Variable D.Parker Excel Programming 8 March 24th 05 10:39 PM
Public Variable Jason Excel Programming 4 April 12th 04 07:06 PM
public variable marwan hefnawy Excel Programming 1 September 5th 03 08:54 AM


All times are GMT +1. The time now is 05:35 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"