View Single Post
  #6   Report Post  
Posted to microsoft.public.excel.programming
JMB JMB is offline
external usenet poster
 
Posts: 2,062
Default Parents and looping

Maybe you could use an array to store your frames, then loop through the array.
Something similar to

Sub test()
Dim varFrames As Variant
Dim cntl As Control
Dim t As Long

varFrames = Array(Me.StartDatumRam1, _
Me.StartDatumRam2)

For t = LBound(varFrames) To UBound(varFrames)
For Each cntl In varFrames(t).Controls
MsgBox cntl.Name
Next cntl
Next t

End Sub

"Viktor Ygdorff" wrote:

thanks for quick answer. yes i know i can use two loops but i have quite a
few loops and it doubles the code length. but you are right. plus it bugs me
that i cannot figure it out. In short I can use two loops but it is far from
desirable. thanks. Do you (or anyone else) know how to write the code so that
it only requires one loop? I would very much appreciate any help!

"Chip Pearson" skrev:

Is there any reason you can't simply use two loops?


Dim ctl As Control
For Each ctl In Me.StartDataRam1.Controls
' do something
Next ctl
For Each ctl In Me.StartDataRam2.Control
' do something
Next ctl


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com





"Viktor Ygdorff" wrote
in message
...
I have a loop that worked just fine unitl I changed my userform
and therefore
had to change the code. The problem with the loop is that I
want it to go
through every control in two different frames. I do not know
how to write
this. Thus the erronous line is:

For Each ctl In Me.StartDatumRam1.Controls & in
Me.StartDatumRam2.Controls

The first part until the "&" is correct I just dont know how to
write it for
two frames. please help me out! Thanks very much!

The complete loop
Private Sub startDatumTextBoxSub()
Dim i As Long
Dim ctl As Control
ReDim strStartDatumArray(0 To lngNumberOfCheckBoxes)
For Each ctl In Me.StartDatumRam1.Controls & in
Me.StartDatumRam2.Controls
If TypeName(ctl) = "TextBox" Then
strStartDatumArray(i) = ctl.Value
i = i + 1
End If
Next ctl
End Sub