Question

i need help in VBA coding: i have nearly 250 TextBox in an user form (is a "matrix" of values), and when user finish fill the boxes, I want to write them in the excel sheet. I could write all 250 lines as

WorkSheets(mysheet).Cells(x,y).Value = TextBox#.Value

but this would be very long. I wanna know if there is a way to make something like a while, and increment the # of the textbox. Thanks, and sorry for my english.

Was it helpful?

Solution

One option is to use code as follows which will give you each textbox. Another option is if the boxes are named with a trailing number (i.e. Txt1, Txt2, etc.), then you could use other code (i.e. Me.Controls("TextBox" & i).Value

Dim cCTL As Control
Dim iCTR As Integer
iCTR = 0
For Each cCTL In Me.Controls
    If TypeName(cCTL ) = "TextBox" Then
        iCTR = iCTR + 1
        WorkSheets(mysheet).Cells(iCTR,y).Value = cCTL.Value
    End If
 Next cCTL 

Option Two (Since all controls are numbered: Just set the For loop to the proper count of controls, and change the 'mysheet' reference to be the column & row you want.

Dim i   As Integer
For i = 1 to 250
    WorkSheets(mysheet).Cells(i+2,y).Value = Me.Controls("ctr" & i).value
Next i
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top