ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Forms - Loop thru text boxes (https://www.excelbanter.com/excel-programming/352492-forms-loop-thru-text-boxes.html)

Michael Beckinsale

Forms - Loop thru text boxes
 
Hi All,

I have a userform with some 100 text boxes on it.

On initialization l apply the values to the text boxes using this code
(extract only)

Private Sub UserForm_Initialize()

Sheets("List_CellsLids").Select
Range("N2").Select

With frmAccom

tbUnit1.Text = ActiveCell.Value
tbUnit2.Text = ActiveCell.Offset(1, 0).Value
tbUnit3.Text = ActiveCell.Offset(2, 0).Value
tbUnit4.Text = ActiveCell.Offset(3, 0).Value
tbUnit5.Text = ActiveCell.Offset(4, 0).Value
tbUnit6.Text = ActiveCell.Offset(5, 0).Value
tbUnit7.Text = ActiveCell.Offset(6, 0).Value
tbUnit8.Text = ActiveCell.Offset(7, 0).Value
tbUnit9.Text = ActiveCell.Offset(8, 0).Value
tbUnit10.Text = ActiveCell.Offset(9, 0).Value
End With
End Sub

On 'Enter' l would normally enter the following code (extract only) so that
if the user 'edits' a value it is written to the appropriate cells

ActiveCell.Value = tbUnit1.Text
ActiveCell.Offset(1, 0).Value = tbUnit2.Text
ActiveCell.Offset(2, 0).Value = tbUnit3.Text
ActiveCell.Offset(3, 0).Value = tbUnit4.Text
ActiveCell.Offset(4, 0).Value = tbUnit5.Text
ActiveCell.Offset(5, 0).Value = tbUnit6.Text
ActiveCell.Offset(6, 0).Value = tbUnit7.Text
ActiveCell.Offset(7, 0).Value = tbUnit8.Text
ActiveCell.Offset(8, 0).Value = tbUnit9.Text
ActiveCell.Offset(9, 0).Value = tbUnit10.Text

However because l have to do this for so many text boxes and l have several
more to write l was hoping to apply the values using a vba / loop code
something like the following

Dim tbni As Integer

Private Sub cmdEnter_Click()
'Sheets("List_CellsLids").Select
'Range("N2").Select
tbni = 1
For i = 1 To 10
ActiveCell.Value = "tbUnit" & tbni & ".Value"
ActiveCell.Offset(1, 0).Activate
tbni = tbni + 1
Next

I think the answer is somewhere in the syntax. Can anybody help please?

Regards

Michael Beckinsale



Tom Ogilvy

Forms - Loop thru text boxes
 
For i = 1 To 10
ActiveCell.Offset(i-1,0).Value = Userform1.Controls("tbUnit" & i).Value
Next

--
Regards,
Tom Ogilvy


"Michael Beckinsale" wrote in message
...
Hi All,

I have a userform with some 100 text boxes on it.

On initialization l apply the values to the text boxes using this code
(extract only)

Private Sub UserForm_Initialize()

Sheets("List_CellsLids").Select
Range("N2").Select

With frmAccom

tbUnit1.Text = ActiveCell.Value
tbUnit2.Text = ActiveCell.Offset(1, 0).Value
tbUnit3.Text = ActiveCell.Offset(2, 0).Value
tbUnit4.Text = ActiveCell.Offset(3, 0).Value
tbUnit5.Text = ActiveCell.Offset(4, 0).Value
tbUnit6.Text = ActiveCell.Offset(5, 0).Value
tbUnit7.Text = ActiveCell.Offset(6, 0).Value
tbUnit8.Text = ActiveCell.Offset(7, 0).Value
tbUnit9.Text = ActiveCell.Offset(8, 0).Value
tbUnit10.Text = ActiveCell.Offset(9, 0).Value
End With
End Sub

On 'Enter' l would normally enter the following code (extract only) so

that
if the user 'edits' a value it is written to the appropriate cells

ActiveCell.Value = tbUnit1.Text
ActiveCell.Offset(1, 0).Value = tbUnit2.Text
ActiveCell.Offset(2, 0).Value = tbUnit3.Text
ActiveCell.Offset(3, 0).Value = tbUnit4.Text
ActiveCell.Offset(4, 0).Value = tbUnit5.Text
ActiveCell.Offset(5, 0).Value = tbUnit6.Text
ActiveCell.Offset(6, 0).Value = tbUnit7.Text
ActiveCell.Offset(7, 0).Value = tbUnit8.Text
ActiveCell.Offset(8, 0).Value = tbUnit9.Text
ActiveCell.Offset(9, 0).Value = tbUnit10.Text

However because l have to do this for so many text boxes and l have

several
more to write l was hoping to apply the values using a vba / loop code
something like the following

Dim tbni As Integer

Private Sub cmdEnter_Click()
'Sheets("List_CellsLids").Select
'Range("N2").Select
tbni = 1
For i = 1 To 10
ActiveCell.Value = "tbUnit" & tbni & ".Value"
ActiveCell.Offset(1, 0).Activate
tbni = tbni + 1
Next

I think the answer is somewhere in the syntax. Can anybody help please?

Regards

Michael Beckinsale





Michael Beckinsale

Forms - Loop thru text boxes
 
Tom,

Many thanks. Works fine.

Another quick question re the same form - if you dont mind

When initializing the form l add up the values in the textboxes named
tbUnit1 to tbUnit20 and put the result in tbUnittotal. However if the user
'edits' a textbox the revised total does not show. Is there a way to show
the correct totals dynamically ?

Regards

Michael beckinsale

"Tom Ogilvy" wrote in message
...
For i = 1 To 10
ActiveCell.Offset(i-1,0).Value = Userform1.Controls("tbUnit" & i).Value
Next

--
Regards,
Tom Ogilvy


"Michael Beckinsale" wrote in message
...
Hi All,

I have a userform with some 100 text boxes on it.

On initialization l apply the values to the text boxes using this code
(extract only)

Private Sub UserForm_Initialize()

Sheets("List_CellsLids").Select
Range("N2").Select

With frmAccom

tbUnit1.Text = ActiveCell.Value
tbUnit2.Text = ActiveCell.Offset(1, 0).Value
tbUnit3.Text = ActiveCell.Offset(2, 0).Value
tbUnit4.Text = ActiveCell.Offset(3, 0).Value
tbUnit5.Text = ActiveCell.Offset(4, 0).Value
tbUnit6.Text = ActiveCell.Offset(5, 0).Value
tbUnit7.Text = ActiveCell.Offset(6, 0).Value
tbUnit8.Text = ActiveCell.Offset(7, 0).Value
tbUnit9.Text = ActiveCell.Offset(8, 0).Value
tbUnit10.Text = ActiveCell.Offset(9, 0).Value
End With
End Sub

On 'Enter' l would normally enter the following code (extract only) so

that
if the user 'edits' a value it is written to the appropriate cells

ActiveCell.Value = tbUnit1.Text
ActiveCell.Offset(1, 0).Value = tbUnit2.Text
ActiveCell.Offset(2, 0).Value = tbUnit3.Text
ActiveCell.Offset(3, 0).Value = tbUnit4.Text
ActiveCell.Offset(4, 0).Value = tbUnit5.Text
ActiveCell.Offset(5, 0).Value = tbUnit6.Text
ActiveCell.Offset(6, 0).Value = tbUnit7.Text
ActiveCell.Offset(7, 0).Value = tbUnit8.Text
ActiveCell.Offset(8, 0).Value = tbUnit9.Text
ActiveCell.Offset(9, 0).Value = tbUnit10.Text

However because l have to do this for so many text boxes and l have

several
more to write l was hoping to apply the values using a vba / loop code
something like the following

Dim tbni As Integer

Private Sub cmdEnter_Click()
'Sheets("List_CellsLids").Select
'Range("N2").Select
tbni = 1
For i = 1 To 10
ActiveCell.Value = "tbUnit" & tbni & ".Value"
ActiveCell.Offset(1, 0).Activate
tbni = tbni + 1
Next

I think the answer is somewhere in the syntax. Can anybody help please?

Regards

Michael Beckinsale







Tom Ogilvy

Forms - Loop thru text boxes
 
You would have to trap the entry and perform the calculation. There is not
way to link a sum formula to it. Even if you did it with cell links, the
sum formula would get overwritten.

You can use a technique documented by John Walkenbach to handle multiple
controls with a single event by using a class module.

Although written for command buttons, it works for textboxes as well. The
only constraint is that they must be events native to the control (such as
click, change, keydown, etc) rather than those provided by the containter
(such as Enter, BeforeUpdate, Exit, etc)

http://www.j-walk.com/ss/excel/tips/tip44.htm
Handle Multiple UserForm Buttons With One Subroutine

If you have already created individual events for each textbox, you could
have them call a common procedure to do the calculation.

--
Regards,
Tom Ogilvy



"Michael Beckinsale" wrote in message
...
Tom,

Many thanks. Works fine.

Another quick question re the same form - if you dont mind

When initializing the form l add up the values in the textboxes named
tbUnit1 to tbUnit20 and put the result in tbUnittotal. However if the user
'edits' a textbox the revised total does not show. Is there a way to show
the correct totals dynamically ?

Regards

Michael beckinsale

"Tom Ogilvy" wrote in message
...
For i = 1 To 10
ActiveCell.Offset(i-1,0).Value = Userform1.Controls("tbUnit" & i).Value
Next

--
Regards,
Tom Ogilvy


"Michael Beckinsale" wrote in message
...
Hi All,

I have a userform with some 100 text boxes on it.

On initialization l apply the values to the text boxes using this code
(extract only)

Private Sub UserForm_Initialize()

Sheets("List_CellsLids").Select
Range("N2").Select

With frmAccom

tbUnit1.Text = ActiveCell.Value
tbUnit2.Text = ActiveCell.Offset(1, 0).Value
tbUnit3.Text = ActiveCell.Offset(2, 0).Value
tbUnit4.Text = ActiveCell.Offset(3, 0).Value
tbUnit5.Text = ActiveCell.Offset(4, 0).Value
tbUnit6.Text = ActiveCell.Offset(5, 0).Value
tbUnit7.Text = ActiveCell.Offset(6, 0).Value
tbUnit8.Text = ActiveCell.Offset(7, 0).Value
tbUnit9.Text = ActiveCell.Offset(8, 0).Value
tbUnit10.Text = ActiveCell.Offset(9, 0).Value
End With
End Sub

On 'Enter' l would normally enter the following code (extract only) so

that
if the user 'edits' a value it is written to the appropriate cells

ActiveCell.Value = tbUnit1.Text
ActiveCell.Offset(1, 0).Value = tbUnit2.Text
ActiveCell.Offset(2, 0).Value = tbUnit3.Text
ActiveCell.Offset(3, 0).Value = tbUnit4.Text
ActiveCell.Offset(4, 0).Value = tbUnit5.Text
ActiveCell.Offset(5, 0).Value = tbUnit6.Text
ActiveCell.Offset(6, 0).Value = tbUnit7.Text
ActiveCell.Offset(7, 0).Value = tbUnit8.Text
ActiveCell.Offset(8, 0).Value = tbUnit9.Text
ActiveCell.Offset(9, 0).Value = tbUnit10.Text

However because l have to do this for so many text boxes and l have

several
more to write l was hoping to apply the values using a vba / loop code
something like the following

Dim tbni As Integer

Private Sub cmdEnter_Click()
'Sheets("List_CellsLids").Select
'Range("N2").Select
tbni = 1
For i = 1 To 10
ActiveCell.Value = "tbUnit" & tbni & ".Value"
ActiveCell.Offset(1, 0).Activate
tbni = tbni + 1
Next

I think the answer is somewhere in the syntax. Can anybody help please?

Regards

Michael Beckinsale









Michael Beckinsale

Forms - Loop thru text boxes
 
Tom,

I was afraid that you were going to say that !

So l would have to call a procedure to sum all the tbUnit1 to tbUnit2
textboxes in each of tbUnit1x_Change events?

Seems a bit of an overkill to me but again many thanks for your help

Regards

Michael





"Tom Ogilvy" wrote in message
...
You would have to trap the entry and perform the calculation. There is
not
way to link a sum formula to it. Even if you did it with cell links, the
sum formula would get overwritten.

You can use a technique documented by John Walkenbach to handle multiple
controls with a single event by using a class module.

Although written for command buttons, it works for textboxes as well. The
only constraint is that they must be events native to the control (such as
click, change, keydown, etc) rather than those provided by the containter
(such as Enter, BeforeUpdate, Exit, etc)

http://www.j-walk.com/ss/excel/tips/tip44.htm
Handle Multiple UserForm Buttons With One Subroutine

If you have already created individual events for each textbox, you could
have them call a common procedure to do the calculation.

--
Regards,
Tom Ogilvy



"Michael Beckinsale" wrote in message
...
Tom,

Many thanks. Works fine.

Another quick question re the same form - if you dont mind

When initializing the form l add up the values in the textboxes named
tbUnit1 to tbUnit20 and put the result in tbUnittotal. However if the
user
'edits' a textbox the revised total does not show. Is there a way to show
the correct totals dynamically ?

Regards

Michael beckinsale

"Tom Ogilvy" wrote in message
...
For i = 1 To 10
ActiveCell.Offset(i-1,0).Value = Userform1.Controls("tbUnit" & i).Value
Next

--
Regards,
Tom Ogilvy


"Michael Beckinsale" wrote in message
...
Hi All,

I have a userform with some 100 text boxes on it.

On initialization l apply the values to the text boxes using this code
(extract only)

Private Sub UserForm_Initialize()

Sheets("List_CellsLids").Select
Range("N2").Select

With frmAccom

tbUnit1.Text = ActiveCell.Value
tbUnit2.Text = ActiveCell.Offset(1, 0).Value
tbUnit3.Text = ActiveCell.Offset(2, 0).Value
tbUnit4.Text = ActiveCell.Offset(3, 0).Value
tbUnit5.Text = ActiveCell.Offset(4, 0).Value
tbUnit6.Text = ActiveCell.Offset(5, 0).Value
tbUnit7.Text = ActiveCell.Offset(6, 0).Value
tbUnit8.Text = ActiveCell.Offset(7, 0).Value
tbUnit9.Text = ActiveCell.Offset(8, 0).Value
tbUnit10.Text = ActiveCell.Offset(9, 0).Value
End With
End Sub

On 'Enter' l would normally enter the following code (extract only) so
that
if the user 'edits' a value it is written to the appropriate cells

ActiveCell.Value = tbUnit1.Text
ActiveCell.Offset(1, 0).Value = tbUnit2.Text
ActiveCell.Offset(2, 0).Value = tbUnit3.Text
ActiveCell.Offset(3, 0).Value = tbUnit4.Text
ActiveCell.Offset(4, 0).Value = tbUnit5.Text
ActiveCell.Offset(5, 0).Value = tbUnit6.Text
ActiveCell.Offset(6, 0).Value = tbUnit7.Text
ActiveCell.Offset(7, 0).Value = tbUnit8.Text
ActiveCell.Offset(8, 0).Value = tbUnit9.Text
ActiveCell.Offset(9, 0).Value = tbUnit10.Text

However because l have to do this for so many text boxes and l have
several
more to write l was hoping to apply the values using a vba / loop code
something like the following

Dim tbni As Integer

Private Sub cmdEnter_Click()
'Sheets("List_CellsLids").Select
'Range("N2").Select
tbni = 1
For i = 1 To 10
ActiveCell.Value = "tbUnit" & tbni & ".Value"
ActiveCell.Offset(1, 0).Activate
tbni = tbni + 1
Next

I think the answer is somewhere in the syntax. Can anybody help
please?

Regards

Michael Beckinsale











Tom Ogilvy

Forms - Loop thru text boxes
 
That is one solution I suggested. The other was the John Walkenbach
approach.

--
Regards,
Tom Ogilvy

"Michael Beckinsale" wrote in message
...
Tom,

I was afraid that you were going to say that !

So l would have to call a procedure to sum all the tbUnit1 to tbUnit2
textboxes in each of tbUnit1x_Change events?

Seems a bit of an overkill to me but again many thanks for your help

Regards

Michael





"Tom Ogilvy" wrote in message
...
You would have to trap the entry and perform the calculation. There is
not
way to link a sum formula to it. Even if you did it with cell links,

the
sum formula would get overwritten.

You can use a technique documented by John Walkenbach to handle multiple
controls with a single event by using a class module.

Although written for command buttons, it works for textboxes as well.

The
only constraint is that they must be events native to the control (such

as
click, change, keydown, etc) rather than those provided by the

containter
(such as Enter, BeforeUpdate, Exit, etc)

http://www.j-walk.com/ss/excel/tips/tip44.htm
Handle Multiple UserForm Buttons With One Subroutine

If you have already created individual events for each textbox, you

could
have them call a common procedure to do the calculation.

--
Regards,
Tom Ogilvy



"Michael Beckinsale" wrote in message
...
Tom,

Many thanks. Works fine.

Another quick question re the same form - if you dont mind

When initializing the form l add up the values in the textboxes named
tbUnit1 to tbUnit20 and put the result in tbUnittotal. However if the
user
'edits' a textbox the revised total does not show. Is there a way to

show
the correct totals dynamically ?

Regards

Michael beckinsale

"Tom Ogilvy" wrote in message
...
For i = 1 To 10
ActiveCell.Offset(i-1,0).Value = Userform1.Controls("tbUnit" &

i).Value
Next

--
Regards,
Tom Ogilvy


"Michael Beckinsale" wrote in

message
...
Hi All,

I have a userform with some 100 text boxes on it.

On initialization l apply the values to the text boxes using this

code
(extract only)

Private Sub UserForm_Initialize()

Sheets("List_CellsLids").Select
Range("N2").Select

With frmAccom

tbUnit1.Text = ActiveCell.Value
tbUnit2.Text = ActiveCell.Offset(1, 0).Value
tbUnit3.Text = ActiveCell.Offset(2, 0).Value
tbUnit4.Text = ActiveCell.Offset(3, 0).Value
tbUnit5.Text = ActiveCell.Offset(4, 0).Value
tbUnit6.Text = ActiveCell.Offset(5, 0).Value
tbUnit7.Text = ActiveCell.Offset(6, 0).Value
tbUnit8.Text = ActiveCell.Offset(7, 0).Value
tbUnit9.Text = ActiveCell.Offset(8, 0).Value
tbUnit10.Text = ActiveCell.Offset(9, 0).Value
End With
End Sub

On 'Enter' l would normally enter the following code (extract only)

so
that
if the user 'edits' a value it is written to the appropriate cells

ActiveCell.Value = tbUnit1.Text
ActiveCell.Offset(1, 0).Value = tbUnit2.Text
ActiveCell.Offset(2, 0).Value = tbUnit3.Text
ActiveCell.Offset(3, 0).Value = tbUnit4.Text
ActiveCell.Offset(4, 0).Value = tbUnit5.Text
ActiveCell.Offset(5, 0).Value = tbUnit6.Text
ActiveCell.Offset(6, 0).Value = tbUnit7.Text
ActiveCell.Offset(7, 0).Value = tbUnit8.Text
ActiveCell.Offset(8, 0).Value = tbUnit9.Text
ActiveCell.Offset(9, 0).Value = tbUnit10.Text

However because l have to do this for so many text boxes and l have
several
more to write l was hoping to apply the values using a vba / loop

code
something like the following

Dim tbni As Integer

Private Sub cmdEnter_Click()
'Sheets("List_CellsLids").Select
'Range("N2").Select
tbni = 1
For i = 1 To 10
ActiveCell.Value = "tbUnit" & tbni & ".Value"
ActiveCell.Offset(1, 0).Activate
tbni = tbni + 1
Next

I think the answer is somewhere in the syntax. Can anybody help
please?

Regards

Michael Beckinsale













Patrick

Forms - Loop thru text boxes
 
I am looping through all the controls on a form and testing for "TextBox". If
true, I am adding a cell value to the textbox. However, I cannot make it loop
through the controls in the proper order. It seems to process them in the
order they were created in. changing the tab order does not help. Is there
some way that I could arrange the order that the controls are in?



"Tom Ogilvy" wrote:

That is one solution I suggested. The other was the John Walkenbach
approach.

--
Regards,
Tom Ogilvy

"Michael Beckinsale" wrote in message
...
Tom,

I was afraid that you were going to say that !

So l would have to call a procedure to sum all the tbUnit1 to tbUnit2
textboxes in each of tbUnit1x_Change events?

Seems a bit of an overkill to me but again many thanks for your help

Regards

Michael





"Tom Ogilvy" wrote in message
...
You would have to trap the entry and perform the calculation. There is
not
way to link a sum formula to it. Even if you did it with cell links,

the
sum formula would get overwritten.

You can use a technique documented by John Walkenbach to handle multiple
controls with a single event by using a class module.

Although written for command buttons, it works for textboxes as well.

The
only constraint is that they must be events native to the control (such

as
click, change, keydown, etc) rather than those provided by the

containter
(such as Enter, BeforeUpdate, Exit, etc)

http://www.j-walk.com/ss/excel/tips/tip44.htm
Handle Multiple UserForm Buttons With One Subroutine

If you have already created individual events for each textbox, you

could
have them call a common procedure to do the calculation.

--
Regards,
Tom Ogilvy



"Michael Beckinsale" wrote in message
...
Tom,

Many thanks. Works fine.

Another quick question re the same form - if you dont mind

When initializing the form l add up the values in the textboxes named
tbUnit1 to tbUnit20 and put the result in tbUnittotal. However if the
user
'edits' a textbox the revised total does not show. Is there a way to

show
the correct totals dynamically ?

Regards

Michael beckinsale

"Tom Ogilvy" wrote in message
...
For i = 1 To 10
ActiveCell.Offset(i-1,0).Value = Userform1.Controls("tbUnit" &

i).Value
Next

--
Regards,
Tom Ogilvy


"Michael Beckinsale" wrote in

message
...
Hi All,

I have a userform with some 100 text boxes on it.

On initialization l apply the values to the text boxes using this

code
(extract only)

Private Sub UserForm_Initialize()

Sheets("List_CellsLids").Select
Range("N2").Select

With frmAccom

tbUnit1.Text = ActiveCell.Value
tbUnit2.Text = ActiveCell.Offset(1, 0).Value
tbUnit3.Text = ActiveCell.Offset(2, 0).Value
tbUnit4.Text = ActiveCell.Offset(3, 0).Value
tbUnit5.Text = ActiveCell.Offset(4, 0).Value
tbUnit6.Text = ActiveCell.Offset(5, 0).Value
tbUnit7.Text = ActiveCell.Offset(6, 0).Value
tbUnit8.Text = ActiveCell.Offset(7, 0).Value
tbUnit9.Text = ActiveCell.Offset(8, 0).Value
tbUnit10.Text = ActiveCell.Offset(9, 0).Value
End With
End Sub

On 'Enter' l would normally enter the following code (extract only)

so
that
if the user 'edits' a value it is written to the appropriate cells

ActiveCell.Value = tbUnit1.Text
ActiveCell.Offset(1, 0).Value = tbUnit2.Text
ActiveCell.Offset(2, 0).Value = tbUnit3.Text
ActiveCell.Offset(3, 0).Value = tbUnit4.Text
ActiveCell.Offset(4, 0).Value = tbUnit5.Text
ActiveCell.Offset(5, 0).Value = tbUnit6.Text
ActiveCell.Offset(6, 0).Value = tbUnit7.Text
ActiveCell.Offset(7, 0).Value = tbUnit8.Text
ActiveCell.Offset(8, 0).Value = tbUnit9.Text
ActiveCell.Offset(9, 0).Value = tbUnit10.Text

However because l have to do this for so many text boxes and l have
several
more to write l was hoping to apply the values using a vba / loop

code
something like the following

Dim tbni As Integer

Private Sub cmdEnter_Click()
'Sheets("List_CellsLids").Select
'Range("N2").Select
tbni = 1
For i = 1 To 10
ActiveCell.Value = "tbUnit" & tbni & ".Value"
ActiveCell.Offset(1, 0).Activate
tbni = tbni + 1
Next

I think the answer is somewhere in the syntax. Can anybody help
please?

Regards

Michael Beckinsale














Tom Ogilvy

Forms - Loop thru text boxes
 
Why not rename them to reflect the order then do

Assuming "form" means Userform

Dim tbox as MsForms.TextBox
for i = 1 to 10
tbox = userform1.Controls("Textbox" & i)
tbox.Value = Worksheets("Sheet1").Cells(i,1).Value
Next

--
Regards,
Tom Ogilvy


"Patrick" wrote in message
...
I am looping through all the controls on a form and testing for "TextBox".

If
true, I am adding a cell value to the textbox. However, I cannot make it

loop
through the controls in the proper order. It seems to process them in the
order they were created in. changing the tab order does not help. Is there
some way that I could arrange the order that the controls are in?



"Tom Ogilvy" wrote:

That is one solution I suggested. The other was the John Walkenbach
approach.

--
Regards,
Tom Ogilvy

"Michael Beckinsale" wrote in message
...
Tom,

I was afraid that you were going to say that !

So l would have to call a procedure to sum all the tbUnit1 to tbUnit2
textboxes in each of tbUnit1x_Change events?

Seems a bit of an overkill to me but again many thanks for your help

Regards

Michael





"Tom Ogilvy" wrote in message
...
You would have to trap the entry and perform the calculation. There

is
not
way to link a sum formula to it. Even if you did it with cell

links,
the
sum formula would get overwritten.

You can use a technique documented by John Walkenbach to handle

multiple
controls with a single event by using a class module.

Although written for command buttons, it works for textboxes as

well.
The
only constraint is that they must be events native to the control

(such
as
click, change, keydown, etc) rather than those provided by the

containter
(such as Enter, BeforeUpdate, Exit, etc)

http://www.j-walk.com/ss/excel/tips/tip44.htm
Handle Multiple UserForm Buttons With One Subroutine

If you have already created individual events for each textbox, you

could
have them call a common procedure to do the calculation.

--
Regards,
Tom Ogilvy



"Michael Beckinsale" wrote in

message
...
Tom,

Many thanks. Works fine.

Another quick question re the same form - if you dont mind

When initializing the form l add up the values in the textboxes

named
tbUnit1 to tbUnit20 and put the result in tbUnittotal. However if

the
user
'edits' a textbox the revised total does not show. Is there a way

to
show
the correct totals dynamically ?

Regards

Michael beckinsale

"Tom Ogilvy" wrote in message
...
For i = 1 To 10
ActiveCell.Offset(i-1,0).Value = Userform1.Controls("tbUnit" &

i).Value
Next

--
Regards,
Tom Ogilvy


"Michael Beckinsale" wrote in

message
...
Hi All,

I have a userform with some 100 text boxes on it.

On initialization l apply the values to the text boxes using

this
code
(extract only)

Private Sub UserForm_Initialize()

Sheets("List_CellsLids").Select
Range("N2").Select

With frmAccom

tbUnit1.Text = ActiveCell.Value
tbUnit2.Text = ActiveCell.Offset(1, 0).Value
tbUnit3.Text = ActiveCell.Offset(2, 0).Value
tbUnit4.Text = ActiveCell.Offset(3, 0).Value
tbUnit5.Text = ActiveCell.Offset(4, 0).Value
tbUnit6.Text = ActiveCell.Offset(5, 0).Value
tbUnit7.Text = ActiveCell.Offset(6, 0).Value
tbUnit8.Text = ActiveCell.Offset(7, 0).Value
tbUnit9.Text = ActiveCell.Offset(8, 0).Value
tbUnit10.Text = ActiveCell.Offset(9, 0).Value
End With
End Sub

On 'Enter' l would normally enter the following code (extract

only)
so
that
if the user 'edits' a value it is written to the appropriate

cells

ActiveCell.Value = tbUnit1.Text
ActiveCell.Offset(1, 0).Value = tbUnit2.Text
ActiveCell.Offset(2, 0).Value = tbUnit3.Text
ActiveCell.Offset(3, 0).Value = tbUnit4.Text
ActiveCell.Offset(4, 0).Value = tbUnit5.Text
ActiveCell.Offset(5, 0).Value = tbUnit6.Text
ActiveCell.Offset(6, 0).Value = tbUnit7.Text
ActiveCell.Offset(7, 0).Value = tbUnit8.Text
ActiveCell.Offset(8, 0).Value = tbUnit9.Text
ActiveCell.Offset(9, 0).Value = tbUnit10.Text

However because l have to do this for so many text boxes and l

have
several
more to write l was hoping to apply the values using a vba /

loop
code
something like the following

Dim tbni As Integer

Private Sub cmdEnter_Click()
'Sheets("List_CellsLids").Select
'Range("N2").Select
tbni = 1
For i = 1 To 10
ActiveCell.Value = "tbUnit" & tbni & ".Value"
ActiveCell.Offset(1, 0).Activate
tbni = tbni + 1
Next

I think the answer is somewhere in the syntax. Can anybody help
please?

Regards

Michael Beckinsale
















Patrick

Forms - Loop thru text boxes
 
I end-up having so many textboxes getting used in so many different
subroutines that I get way too confused unless I give them descriptive names.
I did find a solution, however.

Sub Test2()
Dim ob As String
For i = 2 To 7
For Each ob In UserForm1.Controls
With ob
If TypeName(Control) = "TextBox" Then
ob.Value = Cells(i, ob.TabIndex + 1)
End If
End With
Next
UserForm1.Show
Next i
End Sub

Since I set the form tab indexes to match the columns on the worksheet this
works very well.

"Tom Ogilvy" wrote:

Why not rename them to reflect the order then do

Assuming "form" means Userform

Dim tbox as MsForms.TextBox
for i = 1 to 10
tbox = userform1.Controls("Textbox" & i)
tbox.Value = Worksheets("Sheet1").Cells(i,1).Value
Next

--
Regards,
Tom Ogilvy


"Patrick" wrote in message
...
I am looping through all the controls on a form and testing for "TextBox".

If
true, I am adding a cell value to the textbox. However, I cannot make it

loop
through the controls in the proper order. It seems to process them in the
order they were created in. changing the tab order does not help. Is there
some way that I could arrange the order that the controls are in?



"Tom Ogilvy" wrote:

That is one solution I suggested. The other was the John Walkenbach
approach.

--
Regards,
Tom Ogilvy

"Michael Beckinsale" wrote in message
...
Tom,

I was afraid that you were going to say that !

So l would have to call a procedure to sum all the tbUnit1 to tbUnit2
textboxes in each of tbUnit1x_Change events?

Seems a bit of an overkill to me but again many thanks for your help

Regards

Michael





"Tom Ogilvy" wrote in message
...
You would have to trap the entry and perform the calculation. There

is
not
way to link a sum formula to it. Even if you did it with cell

links,
the
sum formula would get overwritten.

You can use a technique documented by John Walkenbach to handle

multiple
controls with a single event by using a class module.

Although written for command buttons, it works for textboxes as

well.
The
only constraint is that they must be events native to the control

(such
as
click, change, keydown, etc) rather than those provided by the
containter
(such as Enter, BeforeUpdate, Exit, etc)

http://www.j-walk.com/ss/excel/tips/tip44.htm
Handle Multiple UserForm Buttons With One Subroutine

If you have already created individual events for each textbox, you
could
have them call a common procedure to do the calculation.

--
Regards,
Tom Ogilvy



"Michael Beckinsale" wrote in

message
...
Tom,

Many thanks. Works fine.

Another quick question re the same form - if you dont mind

When initializing the form l add up the values in the textboxes

named
tbUnit1 to tbUnit20 and put the result in tbUnittotal. However if

the
user
'edits' a textbox the revised total does not show. Is there a way

to
show
the correct totals dynamically ?

Regards

Michael beckinsale

"Tom Ogilvy" wrote in message
...
For i = 1 To 10
ActiveCell.Offset(i-1,0).Value = Userform1.Controls("tbUnit" &
i).Value
Next

--
Regards,
Tom Ogilvy


"Michael Beckinsale" wrote in
message
...
Hi All,

I have a userform with some 100 text boxes on it.

On initialization l apply the values to the text boxes using

this
code
(extract only)

Private Sub UserForm_Initialize()

Sheets("List_CellsLids").Select
Range("N2").Select

With frmAccom

tbUnit1.Text = ActiveCell.Value
tbUnit2.Text = ActiveCell.Offset(1, 0).Value
tbUnit3.Text = ActiveCell.Offset(2, 0).Value
tbUnit4.Text = ActiveCell.Offset(3, 0).Value
tbUnit5.Text = ActiveCell.Offset(4, 0).Value
tbUnit6.Text = ActiveCell.Offset(5, 0).Value
tbUnit7.Text = ActiveCell.Offset(6, 0).Value
tbUnit8.Text = ActiveCell.Offset(7, 0).Value
tbUnit9.Text = ActiveCell.Offset(8, 0).Value
tbUnit10.Text = ActiveCell.Offset(9, 0).Value
End With
End Sub

On 'Enter' l would normally enter the following code (extract

only)
so
that
if the user 'edits' a value it is written to the appropriate

cells

ActiveCell.Value = tbUnit1.Text
ActiveCell.Offset(1, 0).Value = tbUnit2.Text
ActiveCell.Offset(2, 0).Value = tbUnit3.Text
ActiveCell.Offset(3, 0).Value = tbUnit4.Text
ActiveCell.Offset(4, 0).Value = tbUnit5.Text
ActiveCell.Offset(5, 0).Value = tbUnit6.Text
ActiveCell.Offset(6, 0).Value = tbUnit7.Text
ActiveCell.Offset(7, 0).Value = tbUnit8.Text
ActiveCell.Offset(8, 0).Value = tbUnit9.Text
ActiveCell.Offset(9, 0).Value = tbUnit10.Text

However because l have to do this for so many text boxes and l

have
several
more to write l was hoping to apply the values using a vba /

loop
code
something like the following

Dim tbni As Integer

Private Sub cmdEnter_Click()
'Sheets("List_CellsLids").Select
'Range("N2").Select
tbni = 1
For i = 1 To 10
ActiveCell.Value = "tbUnit" & tbni & ".Value"
ActiveCell.Offset(1, 0).Activate
tbni = tbni + 1
Next

I think the answer is somewhere in the syntax. Can anybody help
please?

Regards

Michael Beckinsale

















Patrick

Forms - Loop thru text boxes
 
Oops... sorry... ob is NOT a string...
Sub Test2()
Dim ob As Object 'or variant
For i = 2 To 7
For Each ob In frm1.Controls
With ob
If TypeName(Control) = "TextBox" Then
ob.Value = Cells(i, ob.TabIndex + 1)
End If
End With
Next
frm1.Show
Next i
End Sub

"Patrick" wrote:

I end-up having so many textboxes getting used in so many different
subroutines that I get way too confused unless I give them descriptive names.
I did find a solution, however.

Sub Test2()
Dim ob As String
For i = 2 To 7
For Each ob In UserForm1.Controls
With ob
If TypeName(Control) = "TextBox" Then
ob.Value = Cells(i, ob.TabIndex + 1)
End If
End With
Next
UserForm1.Show
Next i
End Sub

Since I set the form tab indexes to match the columns on the worksheet this
works very well.

"Tom Ogilvy" wrote:

Why not rename them to reflect the order then do

Assuming "form" means Userform

Dim tbox as MsForms.TextBox
for i = 1 to 10
tbox = userform1.Controls("Textbox" & i)
tbox.Value = Worksheets("Sheet1").Cells(i,1).Value
Next

--
Regards,
Tom Ogilvy


"Patrick" wrote in message
...
I am looping through all the controls on a form and testing for "TextBox".

If
true, I am adding a cell value to the textbox. However, I cannot make it

loop
through the controls in the proper order. It seems to process them in the
order they were created in. changing the tab order does not help. Is there
some way that I could arrange the order that the controls are in?



"Tom Ogilvy" wrote:

That is one solution I suggested. The other was the John Walkenbach
approach.

--
Regards,
Tom Ogilvy

"Michael Beckinsale" wrote in message
...
Tom,

I was afraid that you were going to say that !

So l would have to call a procedure to sum all the tbUnit1 to tbUnit2
textboxes in each of tbUnit1x_Change events?

Seems a bit of an overkill to me but again many thanks for your help

Regards

Michael





"Tom Ogilvy" wrote in message
...
You would have to trap the entry and perform the calculation. There

is
not
way to link a sum formula to it. Even if you did it with cell

links,
the
sum formula would get overwritten.

You can use a technique documented by John Walkenbach to handle

multiple
controls with a single event by using a class module.

Although written for command buttons, it works for textboxes as

well.
The
only constraint is that they must be events native to the control

(such
as
click, change, keydown, etc) rather than those provided by the
containter
(such as Enter, BeforeUpdate, Exit, etc)

http://www.j-walk.com/ss/excel/tips/tip44.htm
Handle Multiple UserForm Buttons With One Subroutine

If you have already created individual events for each textbox, you
could
have them call a common procedure to do the calculation.

--
Regards,
Tom Ogilvy



"Michael Beckinsale" wrote in

message
...
Tom,

Many thanks. Works fine.

Another quick question re the same form - if you dont mind

When initializing the form l add up the values in the textboxes

named
tbUnit1 to tbUnit20 and put the result in tbUnittotal. However if

the
user
'edits' a textbox the revised total does not show. Is there a way

to
show
the correct totals dynamically ?

Regards

Michael beckinsale

"Tom Ogilvy" wrote in message
...
For i = 1 To 10
ActiveCell.Offset(i-1,0).Value = Userform1.Controls("tbUnit" &
i).Value
Next

--
Regards,
Tom Ogilvy


"Michael Beckinsale" wrote in
message
...
Hi All,

I have a userform with some 100 text boxes on it.

On initialization l apply the values to the text boxes using

this
code
(extract only)

Private Sub UserForm_Initialize()

Sheets("List_CellsLids").Select
Range("N2").Select

With frmAccom

tbUnit1.Text = ActiveCell.Value
tbUnit2.Text = ActiveCell.Offset(1, 0).Value
tbUnit3.Text = ActiveCell.Offset(2, 0).Value
tbUnit4.Text = ActiveCell.Offset(3, 0).Value
tbUnit5.Text = ActiveCell.Offset(4, 0).Value
tbUnit6.Text = ActiveCell.Offset(5, 0).Value
tbUnit7.Text = ActiveCell.Offset(6, 0).Value
tbUnit8.Text = ActiveCell.Offset(7, 0).Value
tbUnit9.Text = ActiveCell.Offset(8, 0).Value
tbUnit10.Text = ActiveCell.Offset(9, 0).Value
End With
End Sub

On 'Enter' l would normally enter the following code (extract

only)
so
that
if the user 'edits' a value it is written to the appropriate

cells

ActiveCell.Value = tbUnit1.Text
ActiveCell.Offset(1, 0).Value = tbUnit2.Text
ActiveCell.Offset(2, 0).Value = tbUnit3.Text
ActiveCell.Offset(3, 0).Value = tbUnit4.Text
ActiveCell.Offset(4, 0).Value = tbUnit5.Text
ActiveCell.Offset(5, 0).Value = tbUnit6.Text
ActiveCell.Offset(6, 0).Value = tbUnit7.Text
ActiveCell.Offset(7, 0).Value = tbUnit8.Text
ActiveCell.Offset(8, 0).Value = tbUnit9.Text
ActiveCell.Offset(9, 0).Value = tbUnit10.Text

However because l have to do this for so many text boxes and l

have
several
more to write l was hoping to apply the values using a vba /

loop
code
something like the following

Dim tbni As Integer

Private Sub cmdEnter_Click()
'Sheets("List_CellsLids").Select
'Range("N2").Select
tbni = 1
For i = 1 To 10
ActiveCell.Value = "tbUnit" & tbni & ".Value"
ActiveCell.Offset(1, 0).Activate
tbni = tbni + 1
Next

I think the answer is somewhere in the syntax. Can anybody help
please?

Regards

Michael Beckinsale


















All times are GMT +1. The time now is 10:27 AM.

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