Llenar varios textbox usando ciclos

estoy terminando un registro de notas en Excel 2007, en la parte donde se escribirán las notas tengo varios textbox donde los docentes escribirán las notas y mediante un botón serán enviadas a la hoja en la que se calculara el promedio.

El problema es que son muchos textbox en los que tengo que llenar, el código debe comprobar si una hoja que sirve de matriz el alumno está registrado, así guarda la nota solo en aquellas filas en las que hay alumnos registrados.

No se como hacer el proceso para llenar todos los textbox de forma más eficiente.

Inicialmente intenté algo parecido a esto:

for I=1 to 100

If Sheets("hoja1").Cells(i, 4) <> "" Then

Textbox & i & .text = Sheets("hoja2).Cells(i, 6)

Exit For

End If

Next

No me funcionó, y lo intenté escribiéndolo de otras formas muy similares pero todas me dan error, asi que tuve que comenzar a hacerlo de esta forma (uno a uno) pero resulta muy engorroso y no se si haya una forma de hacerlo más eficiente.

If Sheets("hoja1").Cells(1, 4) <> "" Then
Textbox1.Text = Sheets("hoja2").Cells(1, 6)
End If

If Sheets("hoja1").Cells(2, 4) <> "" Then
Textbox2.Text = Sheets("hoja2").Cells(2, 6)
End If

Gracias de antemano por su ayuda

1 Respuesta

Respuesta
1

Según puedo observar el nombre del textbox lleva una relación con el número de fila, según tu ejemplo:

If Sheets("hoja1").Cells(1, 4) <> "" Then
Textbox1.Text = Sheets("hoja2").Cells(1, 6)
End If

El textbox1 se llena con la fila 1, columna 6, si la fila 1 columna 4 es diferente de espacios.

Si la relación del número del textbox, se cumple con el número de fila, y además, todos los textbox su nombre empieza con la palabra "TextBox", entonces puedes ocupar la siguiente macro.

Private Sub UserForm_Activate()
'Llena varios textbox
'Por.Dam
For Each ctrl In Me.Controls
If TypeName(ctrl) = "TextBox" Then
    numtext = Val(Mid(ctrl.Name, 8, Len(ctrl.Name)))
    If Sheets("hoja1").Cells(numtext, 4) <> "" Then
        ctrl.Value = Sheets("hoja2").Cells(numtext, 6)
    End If
End If
Next
End Sub

Pruébala.

Saludos. Dam
Si es lo que necesitas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas