Re: Checking Options in UserForms Collection



Partick;

There are 2 reasons (I thought) for having a separate macro code for the task:
1. it makes the form's code neater, specially if other frames are added
later to the form and their options need to be similarly cheked; and
2. in the case of multiple user forms, only the standard module's code
needs to be expanded

Now, if you meant to place the regular macro in the form's code ***, not
just the macro's code, then here it is. I moved the macro Sub CheckOptions
() to the form's code ***, and replaced UserForms(1) reference by Me (and
later by nothing).
Clicking the btnOpen button, which has the call to the CheckOptions macro
(as illustrated below), does not produce run-time errors, and does not
display the MsgBox message!! Stepping into the macro suggests that the
message should be displayed !
Maybe I should follow the MsgBox statement by SetFocous on the relevant
option! or maybe not ! Is it the regular macro in the Class-Module Forms
code *** that is causing all these troubles ?

Here is the latest attempt, with all macros in the form's code ***:
frmOptSelect

Private Sub btnOpen_Click ()
................................................
CheckOptions
...............................................
End Sub

Sub CheckOptions()
Dim myOption As Control
Dim myFlag As Integer
......................................................
' check options in frame grpSeries
For Each myOption In Me.grpSeries.Controls
......If myOption.Value = True Then myFlag = 1
Next myOption
If myFlage <> 1 Then MsgBox "Select B- or GEL-Series"
.......................................................
' repeat for all frames
.......................................................

Other suggestions? Thank you.



"Patrick Molloy" wrote:

> I didn't realise that the code was in a module. I assumed that you'd used
> the form's own code ***. Why don't you?
>
> "monir" <monir@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
> news:1032AD94-99F2-4683-86EF-06A0473AF553@xxxxxxxxxxxxxxxx
> > In the For Each statement:
> > ' check options in frame grpSeries
> > ......For Each myOption In UserForms(1).grpSeries.Controls
> >
> > if I replace UserForms(1) by UserForm("frmOptSelect")
> > now it is "Run-time error '13': Type mismatch", and the For Each statement
> > is highlighted. (That is different from the earlier: "Run-time error '9':
> > Subscript out of range" when I used the user form index.)
> >
> > Does this reveal anything?
> >
> > Since I'm referring to the user form object in a standard macro, shouldn't
> > the reference to the user form be specific either by index or by name ?
> >
> > Thanks again.
> >
> >
> > "monir" wrote:
> >
> >> Patrick;
> >>
> >> Replacing UserForms(1). by Me. produced:
> >> ........"Compile error: Invalid use of Me keyword"
> >>
> >> Another suggestion? Thank you.
> >>
> >>
> >>
> >> "Patrick Molloy" wrote:
> >>
> >> > probably zero basedinstead of
> >> > UserForms(1).
> >> > try
> >> > me.
> >> >
> >> >
> >> >
> >> >
> >> > "monir" wrote:
> >> >
> >> > > Hi;
> >> > >
> >> > > The user form, frmOptSelect, has a number of frames, each with a
> >> > > number of
> >> > > option controls. The algoritms for all combinations of options are
> >> > > not
> >> > > currently available, so I'm disabling certain options for now.
> >> > > I'm trying to make sure that an option is selected in each frame on
> >> > > the form
> >> > > before I click the btnOpen button. In:
> >> > >
> >> > > Private Sub btnOpen_Click () event procedure and right at the top,
> >> > > I
> >> > > inserted:
> >> > > ....... CheckOptions
> >> > > which is a regular macro:
> >> > >
> >> > > Sub CheckOptions()
> >> > > Dim myOption As Control
> >> > > Dim myFlag As Integer
> >> > > .....................................................
> >> > > ' check options in frame grpSeries
> >> > > For Each myOption In UserForms(1).grpSeries.Controls
> >> > > .....If myOption.Value = True Then myFlag = 1
> >> > > Next myOption
> >> > > If myFlage <> 1 Then MsgBox "Select B- or GEL-Series"
> >> > > ......................................................
> >> > > ' repeat for all frames
> >> > > ......................................................
> >> > >
> >> > > I got " Run-time error '9': Subscript out of range", and the above
> >> > > For Each
> >> > > statement is higlighted!
> >> > >
> >> > > Any suggestions ? Thank you
>
>
>
.