Parents and looping

V

Viktor Ygdorff

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
 
C

Chip Pearson

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





in message
news:[email protected]...
 
C

Charlie

I think you'll have to use two separate loops

ReDim strStartDatumArray(0 To lngNumberOfCheckBoxes)

For Each ctl In Me.StartDatumRam1.Controls
If TypeName(ctl) = "TextBox" Then
strStartDatumArray(i) = ctl.Value
i = i + 1
End If
Next ctl

For Each ctl In Me.StartDatumRam2.Controls
If TypeName(ctl) = "TextBox" Then
strStartDatumArray(i) = ctl.Value
i = i + 1
End If
Next ctl
 
V

Viktor Ygdorff

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:
 
V

Viktor Ygdorff

is it really so? I mean to mean it seems like there would be no problem with
one loop altough I am no expert.

"Charlie" skrev:
 
J

JMB

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
 

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