ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   User form manipulation (https://www.excelbanter.com/excel-programming/297468-user-form-manipulation.html)

Richard Mogy

User form manipulation
 

From: "Richard Mogy"
Subject: User Form maneuvering
Date: Thursday, May 06, 2004 6:59 AM

Thanks to those who replied. I apologize for not including the code. I
have used the setfocus command, here's basically what the screen looks like

Enter Start Date:
Enter End Date:
Enter Office:
Enter Start Account:
Enter End Account:

Process End

Using these after updates in the "End Date" and "End Account", if the error
is in the end date, focus goes to "Start Account". If the error is in the
End Account, focus goes to the "END" command button.

Here's the code

Private Sub TxtDateTo_afterupdate()
date1 = Format(TxtFromDate.text, "mm/dd/yyyy")
date2 = Format(TxtDateTo.text, "mm/dd/yyyy")
If date2 < date1 Then
Me.TxtFromDate.SetFocus
TxtDateTo.text = ""
TxtFromDate.text = ""
TxtMessage.text = "End Date must be greater than or equal start date"

End If

End Sub




Private Sub txtEndAccount_afterupdate()
acct1 = txtStartAccount.text
acct2 = txtEndAccount.text

If acct2 < acct1 Or Len(acct2) < 5 Or Len(acct1) < 5 Then
Me.txtStartAccount.SetFocus
txtStartAccount.text = ""
txtEndAccount.text = ""
TxtMessage.text = "End Account must be greater than or equal start
Account"
End If

End Sub



"Richard Mogy" wrote in message
m...
I have created a user form with five text boxes.

The user is asked first to enter two numbers. After the second number is
entered, I check if the second number is greater than or equal to the

first.
If it isn't, then I blank out both boxes, display a message and then I

want
the cursor to go to the first box so the user can re-enter the range.

The problem is getting the cursor back to the first box.

I then have the user enter two dates in the third and fourth box. I do
similar checks to determine that the second date is greater than or equal

to
the first date and if not, blank out both boxes, display a message. I

then
want the cursor to go to the third box.

Any suggestions would be appreciated.






Harald Staff

User form manipulation
 
Hi

I suggest you put it in the Exit events instead, there you can use the
Cancel parameter.
Also, allow me to suggest some adjustments in the date assignments, allowing
user entries in all usual date formats:

Private Sub TxtFromDate_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim date1 As Date
If IsDate(TxtFromDate.Text) Then
date1 = DateValue(TxtFromDate.Text)
TxtFromDate.Text = Format(date1, "mm/dd/yyyy")
Else
TxtFromDate.Text = ""
End If
End Sub

Private Sub TxtDateTo_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim date1 As Date, date2 As Date
If IsDate(TxtFromDate.Text) Then
date1 = DateValue(TxtFromDate.Text)
TxtFromDate.Text = Format(date1, "mm/dd/yyyy")
Else
TxtFromDate.SelStart = 0
TxtFromDate.SelLength = Len(TxtFromDate.Text)
TxtFromDate.SetFocus
End If
If IsDate(TxtDateTo.Text) Then
date2 = DateValue(TxtDateTo.Text)
TxtDateTo.Text = Format(date2, "mm/dd/yyyy")
Else
TxtDateTo.SelStart = 0
TxtDateTo.SelLength = Len(TxtDateTo.Text)
TxtDateTo.SetFocus
End If
If date2 < date1 Then
TxtMessage.Text = "End Date must be greater than or equal start date"
TxtDateTo.SelStart = 0
TxtDateTo.SelLength = Len(TxtDateTo.Text)
Cancel = True

End If
End Sub

HTH. Best wishes Harald


"Richard Mogy" skrev i melding
m...

From: "Richard Mogy"
Subject: User Form maneuvering
Date: Thursday, May 06, 2004 6:59 AM

Thanks to those who replied. I apologize for not including the code. I
have used the setfocus command, here's basically what the screen looks

like

Enter Start Date:
Enter End Date:
Enter Office:
Enter Start Account:
Enter End Account:

Process End

Using these after updates in the "End Date" and "End Account", if the

error
is in the end date, focus goes to "Start Account". If the error is in the
End Account, focus goes to the "END" command button.

Here's the code

Private Sub TxtDateTo_afterupdate()
date1 = Format(TxtFromDate.text, "mm/dd/yyyy")
date2 = Format(TxtDateTo.text, "mm/dd/yyyy")
If date2 < date1 Then
Me.TxtFromDate.SetFocus
TxtDateTo.text = ""
TxtFromDate.text = ""
TxtMessage.text = "End Date must be greater than or equal start date"

End If

End Sub




Private Sub txtEndAccount_afterupdate()
acct1 = txtStartAccount.text
acct2 = txtEndAccount.text

If acct2 < acct1 Or Len(acct2) < 5 Or Len(acct1) < 5 Then
Me.txtStartAccount.SetFocus
txtStartAccount.text = ""
txtEndAccount.text = ""
TxtMessage.text = "End Account must be greater than or equal start
Account"
End If

End Sub



"Richard Mogy" wrote in message
m...
I have created a user form with five text boxes.

The user is asked first to enter two numbers. After the second number

is
entered, I check if the second number is greater than or equal to the

first.
If it isn't, then I blank out both boxes, display a message and then I

want
the cursor to go to the first box so the user can re-enter the range.

The problem is getting the cursor back to the first box.

I then have the user enter two dates in the third and fourth box. I do
similar checks to determine that the second date is greater than or

equal
to
the first date and if not, blank out both boxes, display a message. I

then
want the cursor to go to the third box.

Any suggestions would be appreciated.








Richard Mogy

User form manipulation
 
Thank you very much. The only think I would have liked would have been if
the cursor had gone to the start date box instead of the end date box, but I
can work with it.
"Harald Staff" wrote in message
...
Hi

I suggest you put it in the Exit events instead, there you can use the
Cancel parameter.
Also, allow me to suggest some adjustments in the date assignments,

allowing
user entries in all usual date formats:

Private Sub TxtFromDate_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim date1 As Date
If IsDate(TxtFromDate.Text) Then
date1 = DateValue(TxtFromDate.Text)
TxtFromDate.Text = Format(date1, "mm/dd/yyyy")
Else
TxtFromDate.Text = ""
End If
End Sub

Private Sub TxtDateTo_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim date1 As Date, date2 As Date
If IsDate(TxtFromDate.Text) Then
date1 = DateValue(TxtFromDate.Text)
TxtFromDate.Text = Format(date1, "mm/dd/yyyy")
Else
TxtFromDate.SelStart = 0
TxtFromDate.SelLength = Len(TxtFromDate.Text)
TxtFromDate.SetFocus
End If
If IsDate(TxtDateTo.Text) Then
date2 = DateValue(TxtDateTo.Text)
TxtDateTo.Text = Format(date2, "mm/dd/yyyy")
Else
TxtDateTo.SelStart = 0
TxtDateTo.SelLength = Len(TxtDateTo.Text)
TxtDateTo.SetFocus
End If
If date2 < date1 Then
TxtMessage.Text = "End Date must be greater than or equal start date"
TxtDateTo.SelStart = 0
TxtDateTo.SelLength = Len(TxtDateTo.Text)
Cancel = True

End If
End Sub

HTH. Best wishes Harald


"Richard Mogy" skrev i melding
m...

From: "Richard Mogy"
Subject: User Form maneuvering
Date: Thursday, May 06, 2004 6:59 AM

Thanks to those who replied. I apologize for not including the code. I
have used the setfocus command, here's basically what the screen looks

like

Enter Start Date:
Enter End Date:
Enter Office:
Enter Start Account:
Enter End Account:

Process End

Using these after updates in the "End Date" and "End Account", if the

error
is in the end date, focus goes to "Start Account". If the error is in

the
End Account, focus goes to the "END" command button.

Here's the code

Private Sub TxtDateTo_afterupdate()
date1 = Format(TxtFromDate.text, "mm/dd/yyyy")
date2 = Format(TxtDateTo.text, "mm/dd/yyyy")
If date2 < date1 Then
Me.TxtFromDate.SetFocus
TxtDateTo.text = ""
TxtFromDate.text = ""
TxtMessage.text = "End Date must be greater than or equal start

date"

End If

End Sub




Private Sub txtEndAccount_afterupdate()
acct1 = txtStartAccount.text
acct2 = txtEndAccount.text

If acct2 < acct1 Or Len(acct2) < 5 Or Len(acct1) < 5 Then
Me.txtStartAccount.SetFocus
txtStartAccount.text = ""
txtEndAccount.text = ""
TxtMessage.text = "End Account must be greater than or equal start
Account"
End If

End Sub



"Richard Mogy" wrote in message
m...
I have created a user form with five text boxes.

The user is asked first to enter two numbers. After the second number

is
entered, I check if the second number is greater than or equal to the

first.
If it isn't, then I blank out both boxes, display a message and then I

want
the cursor to go to the first box so the user can re-enter the range.

The problem is getting the cursor back to the first box.

I then have the user enter two dates in the third and fourth box. I

do
similar checks to determine that the second date is greater than or

equal
to
the first date and if not, blank out both boxes, display a message. I

then
want the cursor to go to the third box.

Any suggestions would be appreciated.










Harald Staff

User form manipulation
 
Hi

You might try
TxtFromDate.SetFocus
instead of the Cancel = True stuff. If one of them is wrong, who can tell if
it's the From or the To ?

Best wishes Harald

"Richard Mogy" skrev i melding
. com...
Thank you very much. The only think I would have liked would have been if
the cursor had gone to the start date box instead of the end date box, but

I
can work with it.
"Harald Staff" wrote in message
...
Hi

I suggest you put it in the Exit events instead, there you can use the
Cancel parameter.
Also, allow me to suggest some adjustments in the date assignments,

allowing
user entries in all usual date formats:

Private Sub TxtFromDate_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim date1 As Date
If IsDate(TxtFromDate.Text) Then
date1 = DateValue(TxtFromDate.Text)
TxtFromDate.Text = Format(date1, "mm/dd/yyyy")
Else
TxtFromDate.Text = ""
End If
End Sub

Private Sub TxtDateTo_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim date1 As Date, date2 As Date
If IsDate(TxtFromDate.Text) Then
date1 = DateValue(TxtFromDate.Text)
TxtFromDate.Text = Format(date1, "mm/dd/yyyy")
Else
TxtFromDate.SelStart = 0
TxtFromDate.SelLength = Len(TxtFromDate.Text)
TxtFromDate.SetFocus
End If
If IsDate(TxtDateTo.Text) Then
date2 = DateValue(TxtDateTo.Text)
TxtDateTo.Text = Format(date2, "mm/dd/yyyy")
Else
TxtDateTo.SelStart = 0
TxtDateTo.SelLength = Len(TxtDateTo.Text)
TxtDateTo.SetFocus
End If
If date2 < date1 Then
TxtMessage.Text = "End Date must be greater than or equal start

date"
TxtDateTo.SelStart = 0
TxtDateTo.SelLength = Len(TxtDateTo.Text)
Cancel = True

End If
End Sub

HTH. Best wishes Harald


"Richard Mogy" skrev i melding
m...

From: "Richard Mogy"
Subject: User Form maneuvering
Date: Thursday, May 06, 2004 6:59 AM

Thanks to those who replied. I apologize for not including the code.

I
have used the setfocus command, here's basically what the screen

looks
like

Enter Start Date:
Enter End Date:
Enter Office:
Enter Start Account:
Enter End Account:

Process End

Using these after updates in the "End Date" and "End Account", if the

error
is in the end date, focus goes to "Start Account". If the error is in

the
End Account, focus goes to the "END" command button.

Here's the code

Private Sub TxtDateTo_afterupdate()
date1 = Format(TxtFromDate.text, "mm/dd/yyyy")
date2 = Format(TxtDateTo.text, "mm/dd/yyyy")
If date2 < date1 Then
Me.TxtFromDate.SetFocus
TxtDateTo.text = ""
TxtFromDate.text = ""
TxtMessage.text = "End Date must be greater than or equal start

date"

End If

End Sub




Private Sub txtEndAccount_afterupdate()
acct1 = txtStartAccount.text
acct2 = txtEndAccount.text

If acct2 < acct1 Or Len(acct2) < 5 Or Len(acct1) < 5 Then
Me.txtStartAccount.SetFocus
txtStartAccount.text = ""
txtEndAccount.text = ""
TxtMessage.text = "End Account must be greater than or equal start
Account"
End If

End Sub



"Richard Mogy" wrote in message
m...
I have created a user form with five text boxes.

The user is asked first to enter two numbers. After the second

number
is
entered, I check if the second number is greater than or equal to

the
first.
If it isn't, then I blank out both boxes, display a message and then

I
want
the cursor to go to the first box so the user can re-enter the

range.

The problem is getting the cursor back to the first box.

I then have the user enter two dates in the third and fourth box. I

do
similar checks to determine that the second date is greater than or

equal
to
the first date and if not, blank out both boxes, display a message.

I
then
want the cursor to go to the third box.

Any suggestions would be appreciated.













All times are GMT +1. The time now is 01:56 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com