![]() |
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 |
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 |
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 |
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 |
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 |
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