Necesito un código en visual basic 6.0 para copiar información de celdas en varios textbox

Tengo una macro que carga un formulario y cuando este se carga copia la información de varias celdas, organizadas horizontalmente, a varios controles (textbox y combobox).

El código que tengo es

ActiveCell.Offset(0, 1).Select
txtfechalec = ActiveCell
ActiveCell.Offset(0, 1).Select
txtmeslec = ActiveCell
ActiveCell.Offset(0, 1).Select

Es decir que copié el código para 36 controles, uno a uno.

Quiero saber cómo puedo hacerlo para que sea a través de un ciclo que la información se pase a los controles.

1 respuesta

Respuesta
1

Sería más práctico que el nombre del control tuviera un consecutivo 1,2,3,4 ... 36

Si no se puede entonces tendríamos que hacer un arreglo para saber cuál control le corresponde cuál celda.

Te armo el código para ambos casos y te lo envío.

Saludos. DAM

Revisa las siguientes macros, cada macro lleva unos comentarios

Opción1

Private Sub UserForm_Activate()
'Código para textbox y combobox con nombres consecutivos
'Para llenar TextBox1, TextBox2 y TextBox3 con la columna D,E y F
For i = 1 To 3
    Me.Controls("TextBox" & i) = Cells(2, i + 3)
Next
'Para llenar ComboBox1, ComboBox2 y ComboBox3 con la columna G,H y I
For i = 1 To 3
    Me.Controls("ComboBox" & i) = Cells(2, i + 6)
Next
End Sub

Opción2

Private Sub UserForm_Activate()
'Código para textbox y combobox con diferentes nombres
'Para llenar txtfechalec, txtmeslec, txtdia
'poner en un arreglo todos los textbox
tex = Array("txtfechalec", "txtmeslec", "txtdia")
'En otro arreglo poner la columna que corresponde a cada control
col = Array("D", "E", "F")
'Este sería el ciclo
For i = LBound(tex) To UBound(tex)
    Me.Controls(tex(i)) = Cells(2, col(i))
Next
End Sub

Opción3

Private Sub UserForm_Activate()
'Este ciclo es para textbox de diferente nombre
'Y van apareciendo conforme fueron creados, es decir,
'el primer textbox que será llenado fue el primero que se creó
'Empieza en la columna D
i = 4
For Each ctrl In Me.Controls
    If TypeName(ctrl) = "TextBox" Then
        ctrl.Value = Cells(2, i)
        i = i + 1
    End If
Next
End Sub

Te anexo mi archivo para que hagas pruebas

https://www.dropbox.com/s/i6he99ergantb7c/textbox%20carga%20opciones.xlsm

Saludos. DAM
Si es lo que necesitas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas