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

  • Thread starter Thread starter RyanH
  • Start date Start date
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
 
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
 
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
 
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
 
Your code worked ok for me.

What line caused the error?

(I don't have a guess, but maybe someone else will.)
 
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.)
 
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
 
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.
 
Back
Top