For Each...Loop using Pages in a Multipage Control

R

RyanH

I am scattered today. Yesterday this code was working fine and today it is
not. I am getting a Type MisMatch Error indicated below, why?

Private Sub cboIllumination_Change()

Dim pg As Page

'disables all three pages
For Each pg In mpgIllumination.Pages
pg.Enabled = False
Next pg

End Sub
 
R

RyanH

That seems to work! Why would my code not work? Defining pg as a Page
should work I would think.
--
Cheers,
Ryan


Susan said:
try

dim page as control

:)
susan
 
R

RyanH

Ooops! No can do. I just realized that Dim pg as Control disables all the
controls in the page. I guess I will have to do this below. I figured I'd
just use the For Each Loop

'disables all three pages
For i = 0 To 2
mpgIllumination.Pages(i).Enabled = False
Next i
--
Cheers,
Ryan


Susan said:
try

dim page as control

:)
susan
 
S

Susan

i don't think there is a type as "page". anything on a userform is
dimmed as a control. then you can specify what type of control you're
looking for.

like this:

dim oControl as Control

if typeof oControl is MSForms.multipage then..........
if typeof oControl is MSForms.textbox then.........

:)
susan
 
S

Susan

yes, then you'd have to specify what pg is, i.e., what type of
control. well, wait a minute, what difference does it make if it
disables all the controls on the page if the page itself is disabled?
if the whole page is disabled you won't be able to use anything on the
page anyway.

i guess your way is better for you if it does what you want it to!
:)
susan
 
D

Dave Peterson

Your code worked ok for me.

What line caused the error?

(I don't have a guess, but maybe someone else will.)
 
R

RyanH

For some reason this code was working yesterday. You even helped me with a
portion of it. But today it changed its mind and decided not to work so I
switched to this:

'disables all three pages
For i = 0 To 2
mpgIllumination.Pages(i).Enabled = False
Next i

Thanks for the help
--
Cheers,
Ryan


Dave Peterson said:
Your code worked ok for me.

What line caused the error?

(I don't have a guess, but maybe someone else will.)
 
D

Dave Peterson

I think you have a problem somewhere that you're masking. Your other code is ok
as far as I can see.

And if you add pages to that multipage control, you may not want to go back to
change the "from 0 to 2" lines. Easily fixed, yes. But it's easily missed,
too.

I'd use something like this to disable all the pages--no matter the count.

Dim i As Long
'disables all pages
With Me.mpgIllumination
For i = 0 To .Count - 1
.Pages(i).Enabled = False
Next i
End With

Much closer to what your "for each" code tried to do.
For some reason this code was working yesterday. You even helped me with a
portion of it. But today it changed its mind and decided not to work so I
switched to this:

'disables all three pages
For i = 0 To 2
mpgIllumination.Pages(i).Enabled = False
Next i

Thanks for the help
 
R

RyanH

Absolutely Dave! Thanks for the tip!
--
Cheers,
Ryan


Dave Peterson said:
I think you have a problem somewhere that you're masking. Your other code is ok
as far as I can see.

And if you add pages to that multipage control, you may not want to go back to
change the "from 0 to 2" lines. Easily fixed, yes. But it's easily missed,
too.

I'd use something like this to disable all the pages--no matter the count.

Dim i As Long
'disables all pages
With Me.mpgIllumination
For i = 0 To .Count - 1
.Pages(i).Enabled = False
Next i
End With

Much closer to what your "for each" code tried to do.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top