Macro ingreso de datos según numeración

Busco un alma caritativa que tenga más idea que yo. He intentado desde hace ya una semana hacer funcionar una macro que haga lo que necesito, y he dado vuelta la red, pero no encuentro ni se me ocurre nada realmente funcional.

En una hoja (Lista Alumnos) tengo una lista de números desde 1 a 10 en la columna A, desde A2 hasta A11. Las otras columnas son datos de los alumnos (nombre, clase, salón).

En otra hoja "Ingreso" tengo los datos que se deben completar para cada alumno. Los alumnos vienen numerados, por lo que el alumno Pepito, de 3er año, salón 5, ya tiene el numero 5.

El macro que necesito, al dar guardar (botón en hoja "Ingreso"), debe buscar el valor de "numero" y agregar los datos en la fila que corresponde a ese valor.

En el ejemplo, llega el alumno numero 5. Se ingresa el 5 en la hoja "Ingreso" (B3), se le piden los datos de nombre (B4), clase (B5) y salón (B6) y se da guardar. El macro busca el valor de B3 en la columna A de la hoja Lista Alumnos y llena los valores para nombre (B6), Clase (C6) y Salón (D6).

Adjunto un archivo para que se entienda mejor, creo que los complique... EJEMPLO

Si pudieran ayudarme, eternamente agradecido!

1 Respuesta

Respuesta
3

Clic derecho sobre el botón, opción 'Asignar Macro' y allí copia esto:

Sub Rectánguloredondeado1_Haga_clic_en()
'x Elsamatilde
'se declara la hoja
Set hol = Sheets("Lista Alumnos")
'se busca el nro en hoja Listas, col A
Set busco = hol.[A:A].Find([B3], LookIn:=xlValues, lookat:=xlWhole)
'si lo encuentra pasa los datos sino avisa del error
If Not busco Is Nothing Then
    filx = busco.Row
    hol.Range("B" & filx) = [B4]
    hol.Range("C" & filx) = [B5]
    hol.Range("D" & filx) = [B6]
Else
    MsgBox "Este registro no se encuentra en la lista."
End If
'opcional: limpiar las celdas para un nuevo ingreso
[B3:B6] = ""
[B3].Select
End Sub

Te dejé como opcional que luego limpie las celdas y se posicione nuevamente para otro ingreso.... si no lo necesitas borrá las 2 últimas instrucciones.

PD) Otro modo que seguramente verás en muchos códigos es nombrando directamente la hoja sin necesidad de utilizar una variable como 'hol'

Set busco = Sheets("Lista Alumnos").[A:A].Find([B3], LookIn:=xlValues, lookat:=xlWhole)

¡Gracias! Elsa, casi puedo decir que te amo!! Era exactamente lo que necesitaba, y que simple lo hiciste!! 

Realmente muchas muchas gracias!!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas