ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Parents and looping (https://www.excelbanter.com/excel-programming/366959-parents-looping.html)

Viktor Ygdorff

Parents and looping
 
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

Chip Pearson

Parents and looping
 
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




Charlie

Parents and looping
 
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


"Viktor Ygdorff" wrote:

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


Viktor Ygdorff

Parents and looping
 
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





Viktor Ygdorff

Parents and looping
 
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:

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


"Viktor Ygdorff" wrote:

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


JMB

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






All times are GMT +1. The time now is 02:12 AM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com