ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Event Reference (https://www.excelbanter.com/excel-programming/423672-event-reference.html)

[email protected]

Event Reference
 
I have two generic questions for which I will elaborate specifically
and for which I will provide code where necessary: (1) does Excel have
a way to reference an event name (i.e. the text to the left of the “_”
and (2) how well does Excel keep track of the "Me." construct for
UserForms?

(1) My UserForm name: “frmGradeElementary” / My TextBox names:
“txtExpDesign1”; “txtExpDesign2”; etc.

I created a UserForm which has multiple pages and each page has
multiple text boxes. The user inserts values into the text boxes and
upon submitting the form, the values are output to the spreadsheet;
however, the values are tested for accuracy via a Function nested in
the event (see code below). This way, the user receives immediate
feedback if an incorrect value is inserted into the text box. Since I
will be creating the Exit event for a number of text boxes, is there
an easy way to reference the …_Exit name (i.e. the text to the left of
the “_”)? For example, in the Exit event below, the line “score =
validate10(frmGradeElementary.txtExpDesign1.Value) ” will be repeated
for …txtExpDesign2.Value, …txtExpDesign3.Value, etc. I know that I
could replace “frmGradeElementary” with “Me” to read
“Me.txtExpDesign1” but is there a similar replacement (like “Me”) for
the “txtExpDesign1”? (Maybe something like “Me.ThisEvent.Value”?).

Option Explicit
Dim blnScore As Boolean

Private Sub txtExpDesign1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
blnScore = validate10(frmGradeElementary.txtExpDesign1.Value)
If Not score Then
MsgBox "You input an incorrect value." & vbCr _
& "The value must be a number and between 0 and 10."
Cancel = True
End If
End Sub

Function validate10(number) As Boolean
If (IsNumeric(number) And number <= 10 And number = 0) Then
validate10 = True
End If
End Function

(2) I know that “Me” will reference a respective class (e.g. in
ThisWorkbook “Me” refers to ThisWorkbook, and in a UserForm “Me”
refers to the UserForm), but does “Me” get confused? For example, if
I have multiple UserForms and when one UserForm (frmA) is used to show
another UserForm (frmB), will Excel keep track of “Me” if it is used
in both frmA and frmB?

I’m curious because if I build a base UserForm (frmA), copy frmA,
rename the copied frmA as frmB, and then make slight modifications to
frmB, then it may be easier to deal with code changes that have
“Me.xzy” rather than replace frmA.xyz with frmB.xyz after frmA is
copied. (I’m anticipating that referencing the form name is a much
better practice than using “Me” (i.e. it’s better to use frmA.xyz and
frmB.xyz than to use the generic Me.xyz)).

Thanks,

Matthew Herbert

Bob Phillips[_3_]

Event Reference
 
Me always refers to the containing class, and only the class, it will not
refer to a control on a userform say.

I have never had a problem using Me, with multiple userforms. I fail to see
how a problem can arise as the Me construct can only be used within the form
code itself, it cannot be referenced by Me outside of the form code.

--
__________________________________
HTH

Bob

wrote in message
...
I have two generic questions for which I will elaborate specifically
and for which I will provide code where necessary: (1) does Excel have
a way to reference an event name (i.e. the text to the left of the “_”
and (2) how well does Excel keep track of the "Me." construct for
UserForms?

(1) My UserForm name: “frmGradeElementary” / My TextBox names:
“txtExpDesign1”; “txtExpDesign2”; etc.

I created a UserForm which has multiple pages and each page has
multiple text boxes. The user inserts values into the text boxes and
upon submitting the form, the values are output to the spreadsheet;
however, the values are tested for accuracy via a Function nested in
the event (see code below). This way, the user receives immediate
feedback if an incorrect value is inserted into the text box. Since I
will be creating the Exit event for a number of text boxes, is there
an easy way to reference the …_Exit name (i.e. the text to the left of
the “_”)? For example, in the Exit event below, the line “score =
validate10(frmGradeElementary.txtExpDesign1.Value) ” will be repeated
for …txtExpDesign2.Value, …txtExpDesign3.Value, etc. I know that I
could replace “frmGradeElementary” with “Me” to read
“Me.txtExpDesign1” but is there a similar replacement (like “Me”) for
the “txtExpDesign1”? (Maybe something like “Me.ThisEvent.Value”?).

Option Explicit
Dim blnScore As Boolean

Private Sub txtExpDesign1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
blnScore = validate10(frmGradeElementary.txtExpDesign1.Value)
If Not score Then
MsgBox "You input an incorrect value." & vbCr _
& "The value must be a number and between 0 and 10."
Cancel = True
End If
End Sub

Function validate10(number) As Boolean
If (IsNumeric(number) And number <= 10 And number = 0) Then
validate10 = True
End If
End Function

(2) I know that “Me” will reference a respective class (e.g. in
ThisWorkbook “Me” refers to ThisWorkbook, and in a UserForm “Me”
refers to the UserForm), but does “Me” get confused? For example, if
I have multiple UserForms and when one UserForm (frmA) is used to show
another UserForm (frmB), will Excel keep track of “Me” if it is used
in both frmA and frmB?

I’m curious because if I build a base UserForm (frmA), copy frmA,
rename the copied frmA as frmB, and then make slight modifications to
frmB, then it may be easier to deal with code changes that have
“Me.xzy” rather than replace frmA.xyz with frmB.xyz after frmA is
copied. (I’m anticipating that referencing the form name is a much
better practice than using “Me” (i.e. it’s better to use frmA.xyz and
frmB.xyz than to use the generic Me.xyz)).

Thanks,

Matthew Herbert



[email protected]

Event Reference
 
On Feb 9, 1:31*am, "Bob Phillips" wrote:
Me always refers to the containing class, and only the class, it will not
refer to a control on a userform say.

I have never had a problem using Me, with multiple userforms. I fail to see
how a problem can arise as the Me construct can only be used within the form
code itself, it cannot be referenced by Me outside of the form code.

--
__________________________________
HTH

Bob

wrote in message

...
I have two generic questions for which I will elaborate specifically
and for which I will provide code where necessary: (1) does Excel have
a way to reference an event name (i.e. the text to the left of the “_”
and (2) how well does Excel keep track of the "Me." construct for
UserForms?

(1) My UserForm name: “frmGradeElementary” / My TextBox names:
“txtExpDesign1”; “txtExpDesign2”; etc.

I created a UserForm which has multiple pages and each page has
multiple text boxes. *The user inserts values into the text boxes and
upon submitting the form, the values are output to the spreadsheet;
however, the values are tested for accuracy via a Function nested in
the event (see code below). *This way, the user receives immediate
feedback if an incorrect value is inserted into the text box. *Since I
will be creating the Exit event for a number of text boxes, is there
an easy way to reference the …_Exit name (i.e. the text to the left of
the “_”)? *For example, in the Exit event below, the line “score =
validate10(frmGradeElementary.txtExpDesign1.Value) ” will be repeated
for …txtExpDesign2.Value, …txtExpDesign3.Value, etc. *I know that I
could replace “frmGradeElementary” with “Me” to read
“Me.txtExpDesign1” but is there a similar replacement (like “Me”) for
the “txtExpDesign1”? *(Maybe something like “Me.ThisEvent.Value”?).

Option Explicit
Dim blnScore As Boolean

Private Sub txtExpDesign1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
blnScore = validate10(frmGradeElementary.txtExpDesign1.Value)
If Not score Then
* * MsgBox "You input an incorrect value." & vbCr _
* * * * & "The value must be a number and between 0 and 10."
* * Cancel = True
End If
End Sub

Function validate10(number) As Boolean
If (IsNumeric(number) And number <= 10 And number = 0) Then
* * validate10 = True
End If
End Function

(2) I know that “Me” will reference a respective class (e.g. in
ThisWorkbook “Me” refers to ThisWorkbook, and in a UserForm “Me”
refers to the UserForm), but does “Me” get confused? *For example, if
I have multiple UserForms and when one UserForm (frmA) is used to show
another UserForm (frmB), will Excel keep track of “Me” if it is used
in both frmA and frmB?

I’m curious because if I build a base UserForm (frmA), copy frmA,
rename the copied frmA as frmB, and then make slight modifications to
frmB, then it may be easier to deal with code changes that have
“Me.xzy” rather than replace frmA.xyz with frmB.xyz after frmA is
copied. *(I’m anticipating that referencing the form name is a much
better practice than using “Me” (i.e. it’s better to use frmA.xyz and
frmB.xyz than to use the generic Me.xyz)).

Thanks,

Matthew Herbert


Bob,

Thanks for the explaination for "Me." Do you know if there is a way
to solve my question regarding the events (i.e. my "(1)" question)?
I've been searching around, but haven't had any luck finding
information related to this.

Thanks,

Matt

Bob Phillips[_3_]

Event Reference
 
No, you can't because there is no familiar form of the control. But you
could reduce it to

Option Explicit

Private Sub txtExpDesign1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not validate10(Me.txtExpDesign1) Then
MsgBox "You input an incorrect value." & vbCr _
& "The value must be a number and between 0 and 10."
Cancel = True
End If
End Sub

Function validate10(Byref ctl As Object) As Boolean
With ctl
validate10 = IsNumeric(.Value) And .Value <= 10 And .Value = 0)
End With
End Function

If your concern were with multiple controls, you could use a control array,
but unfortunately the Exit event is exposed in this manner.

--
__________________________________
HTH

Bob

wrote in message
...
On Feb 9, 1:31 am, "Bob Phillips" wrote:
Me always refers to the containing class, and only the class, it will not
refer to a control on a userform say.

I have never had a problem using Me, with multiple userforms. I fail to
see
how a problem can arise as the Me construct can only be used within the
form
code itself, it cannot be referenced by Me outside of the form code.

--
__________________________________
HTH

Bob

wrote in message

...
I have two generic questions for which I will elaborate specifically
and for which I will provide code where necessary: (1) does Excel have
a way to reference an event name (i.e. the text to the left of the “_”
and (2) how well does Excel keep track of the "Me." construct for
UserForms?

(1) My UserForm name: “frmGradeElementary” / My TextBox names:
“txtExpDesign1”; “txtExpDesign2”; etc.

I created a UserForm which has multiple pages and each page has
multiple text boxes. The user inserts values into the text boxes and
upon submitting the form, the values are output to the spreadsheet;
however, the values are tested for accuracy via a Function nested in
the event (see code below). This way, the user receives immediate
feedback if an incorrect value is inserted into the text box. Since I
will be creating the Exit event for a number of text boxes, is there
an easy way to reference the …_Exit name (i.e. the text to the left of
the “_”)? For example, in the Exit event below, the line “score =
validate10(frmGradeElementary.txtExpDesign1.Value) ” will be repeated
for …txtExpDesign2.Value, …txtExpDesign3.Value, etc. I know that I
could replace “frmGradeElementary” with “Me” to read
“Me.txtExpDesign1” but is there a similar replacement (like “Me”) for
the “txtExpDesign1”? (Maybe something like “Me.ThisEvent.Value”?).

Option Explicit
Dim blnScore As Boolean

Private Sub txtExpDesign1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
blnScore = validate10(frmGradeElementary.txtExpDesign1.Value)
If Not score Then
MsgBox "You input an incorrect value." & vbCr _
& "The value must be a number and between 0 and 10."
Cancel = True
End If
End Sub

Function validate10(number) As Boolean
If (IsNumeric(number) And number <= 10 And number = 0) Then
validate10 = True
End If
End Function

(2) I know that “Me” will reference a respective class (e.g. in
ThisWorkbook “Me” refers to ThisWorkbook, and in a UserForm “Me”
refers to the UserForm), but does “Me” get confused? For example, if
I have multiple UserForms and when one UserForm (frmA) is used to show
another UserForm (frmB), will Excel keep track of “Me” if it is used
in both frmA and frmB?

I’m curious because if I build a base UserForm (frmA), copy frmA,
rename the copied frmA as frmB, and then make slight modifications to
frmB, then it may be easier to deal with code changes that have
“Me.xzy” rather than replace frmA.xyz with frmB.xyz after frmA is
copied. (I’m anticipating that referencing the form name is a much
better practice than using “Me” (i.e. it’s better to use frmA.xyz and
frmB.xyz than to use the generic Me.xyz)).

Thanks,

Matthew Herbert


Bob,

Thanks for the explaination for "Me." Do you know if there is a way
to solve my question regarding the events (i.e. my "(1)" question)?
I've been searching around, but haven't had any luck finding
information related to this.

Thanks,

Matt



[email protected]

Event Reference
 
On Feb 9, 12:21*pm, "Bob Phillips" wrote:
No, you can't because there is no familiar form of the control. But you
could reduce it to

Option Explicit

Private Sub txtExpDesign1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not validate10(Me.txtExpDesign1) Then
* * MsgBox "You input an incorrect value." & vbCr _
* * * * & "The value must be a number and between 0 and 10."
* * Cancel = True
End If
End Sub

Function validate10(Byref ctl As Object) As Boolean
*With ctl
* validate10 = IsNumeric(.Value) And .Value <= 10 And .Value = 0)
*End With
End Function

If your concern were with multiple controls, you could use a control array,
but unfortunately the Exit event is exposed in this manner.

--
__________________________________
HTH

Bob

wrote in message

...
On Feb 9, 1:31 am, "Bob Phillips" wrote:





Me always refers to the containing class, and only the class, it will not
refer to a control on a userform say.


I have never had a problem using Me, with multiple userforms. I fail to
see
how a problem can arise as the Me construct can only be used within the
form
code itself, it cannot be referenced by Me outside of the form code.


--
__________________________________
HTH


Bob


wrote in message


....
I have two generic questions for which I will elaborate specifically
and for which I will provide code where necessary: (1) does Excel have
a way to reference an event name (i.e. the text to the left of the “_”
and (2) how well does Excel keep track of the "Me." construct for
UserForms?


(1) My UserForm name: “frmGradeElementary” / My TextBox names:
“txtExpDesign1”; “txtExpDesign2”; etc.


I created a UserForm which has multiple pages and each page has
multiple text boxes. The user inserts values into the text boxes and
upon submitting the form, the values are output to the spreadsheet;
however, the values are tested for accuracy via a Function nested in
the event (see code below). This way, the user receives immediate
feedback if an incorrect value is inserted into the text box. Since I
will be creating the Exit event for a number of text boxes, is there
an easy way to reference the …_Exit name (i.e. the text to the left of
the “_”)? For example, in the Exit event below, the line “score =
validate10(frmGradeElementary.txtExpDesign1.Value) ” will be repeated
for …txtExpDesign2.Value, …txtExpDesign3.Value, etc. I know that I
could replace “frmGradeElementary” with “Me” to read
“Me.txtExpDesign1” but is there a similar replacement (like “Me”) for
the “txtExpDesign1”? (Maybe something like “Me.ThisEvent.Value”?).


Option Explicit
Dim blnScore As Boolean


Private Sub txtExpDesign1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
blnScore = validate10(frmGradeElementary.txtExpDesign1.Value)
If Not score Then
MsgBox "You input an incorrect value." & vbCr _
& "The value must be a number and between 0 and 10."
Cancel = True
End If
End Sub


Function validate10(number) As Boolean
If (IsNumeric(number) And number <= 10 And number = 0) Then
validate10 = True
End If
End Function


(2) I know that “Me” will reference a respective class (e.g. in
ThisWorkbook “Me” refers to ThisWorkbook, and in a UserForm “Me”
refers to the UserForm), but does “Me” get confused? For example, if
I have multiple UserForms and when one UserForm (frmA) is used to show
another UserForm (frmB), will Excel keep track of “Me” if it is used
in both frmA and frmB?


I’m curious because if I build a base UserForm (frmA), copy frmA,
rename the copied frmA as frmB, and then make slight modifications to
frmB, then it may be easier to deal with code changes that have
“Me.xzy” rather than replace frmA.xyz with frmB.xyz after frmA is
copied. (I’m anticipating that referencing the form name is a much
better practice than using “Me” (i.e. it’s better to use frmA.xyz and
frmB.xyz than to use the generic Me.xyz)).


Thanks,


Matthew Herbert


Bob,

Thanks for the explaination for "Me." *Do you know if there is a way
to solve my question regarding the events (i.e. my "(1)" question)?
I've been searching around, but haven't had any luck finding
information related to this.

Thanks,

Matt- Hide quoted text -

- Show quoted text -


Thanks again; I appreciate the help.

Matt

[email protected]

Event Reference
 
On Feb 9, 4:06*pm, wrote:
On Feb 9, 12:21*pm, "Bob Phillips" wrote:





No, you can't because there is no familiar form of the control. But you
could reduce it to


Option Explicit


Private Sub txtExpDesign1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not validate10(Me.txtExpDesign1) Then
* * MsgBox "You input an incorrect value." & vbCr _
* * * * & "The value must be a number and between 0 and 10."
* * Cancel = True
End If
End Sub


Function validate10(Byref ctl As Object) As Boolean
*With ctl
* validate10 = IsNumeric(.Value) And .Value <= 10 And .Value = 0)
*End With
End Function


If your concern were with multiple controls, you could use a control array,
but unfortunately the Exit event is exposed in this manner.


--
__________________________________
HTH


Bob


wrote in message


....
On Feb 9, 1:31 am, "Bob Phillips" wrote:


Me always refers to the containing class, and only the class, it will not
refer to a control on a userform say.


I have never had a problem using Me, with multiple userforms. I fail to
see
how a problem can arise as the Me construct can only be used within the
form
code itself, it cannot be referenced by Me outside of the form code.


--
__________________________________
HTH


Bob


wrote in message


....
I have two generic questions for which I will elaborate specifically
and for which I will provide code where necessary: (1) does Excel have
a way to reference an event name (i.e. the text to the left of the “_”
and (2) how well does Excel keep track of the "Me." construct for
UserForms?


(1) My UserForm name: “frmGradeElementary” / My TextBox names:
“txtExpDesign1”; “txtExpDesign2”; etc.


I created a UserForm which has multiple pages and each page has
multiple text boxes. The user inserts values into the text boxes and
upon submitting the form, the values are output to the spreadsheet;
however, the values are tested for accuracy via a Function nested in
the event (see code below). This way, the user receives immediate
feedback if an incorrect value is inserted into the text box. Since I
will be creating the Exit event for a number of text boxes, is there
an easy way to reference the …_Exit name (i.e. the text to the left of
the “_”)? For example, in the Exit event below, the line “score =
validate10(frmGradeElementary.txtExpDesign1.Value) ” will be repeated
for …txtExpDesign2.Value, …txtExpDesign3.Value, etc. I know that I
could replace “frmGradeElementary” with “Me” to read
“Me.txtExpDesign1” but is there a similar replacement (like “Me”) for
the “txtExpDesign1”? (Maybe something like “Me.ThisEvent.Value”?).


Option Explicit
Dim blnScore As Boolean


Private Sub txtExpDesign1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
blnScore = validate10(frmGradeElementary.txtExpDesign1.Value)
If Not score Then
MsgBox "You input an incorrect value." & vbCr _
& "The value must be a number and between 0 and 10."
Cancel = True
End If
End Sub


Function validate10(number) As Boolean
If (IsNumeric(number) And number <= 10 And number = 0) Then
validate10 = True
End If
End Function


(2) I know that “Me” will reference a respective class (e.g. in
ThisWorkbook “Me” refers to ThisWorkbook, and in a UserForm “Me”
refers to the UserForm), but does “Me” get confused? For example, if
I have multiple UserForms and when one UserForm (frmA) is used to show
another UserForm (frmB), will Excel keep track of “Me” if it is used
in both frmA and frmB?


I’m curious because if I build a base UserForm (frmA), copy frmA,
rename the copied frmA as frmB, and then make slight modifications to
frmB, then it may be easier to deal with code changes that have
“Me.xzy” rather than replace frmA.xyz with frmB.xyz after frmA is
copied. (I’m anticipating that referencing the form name is a much
better practice than using “Me” (i.e. it’s better to use frmA.xyz and
frmB.xyz than to use the generic Me.xyz)).


Thanks,


Matthew Herbert


Bob,


Thanks for the explaination for "Me." *Do you know if there is a way
to solve my question regarding the events (i.e. my "(1)" question)?
I've been searching around, but haven't had any luck finding
information related to this.


Thanks,


Matt- Hide quoted text -


- Show quoted text -


Thanks again; I appreciate the help.

Matt- Hide quoted text -

- Show quoted text -


I researched my own solution.

http://groups.google.com/group/micro...03d874563d8c42

Best,

Matt


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

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