Ayuda con la carga de datos usando macros en Microsoft Excel

Hola.Me sucede algo muy curioso con excel. Tengo un libro de gestión de alumnos de un colegio.En la hoja1, que le llamé "carga", emulé un formulario de carga de datos.Los datos cargados allí, luego con una macro se copian y se pegan en otra hoja (hoja2)que funciona como base de datos la que se ordena automáticamente en orden alfabético con una macro. Hasta aquí todo bien.Los datos se cargan en la base sin ningún problema.En la hoja3 emulé otro formulario, pero esta vez de búsqueda, usando sendas fórmulas de búsqueda.El problema que tengo es que en forma aleatoria al poner en la celda correspondiente al apellido, no realiza la búsqueda(o sea da error). ES como si no encontrara el apellido.El problema se resuelve yendo a la base, tipeando nuevamente el apellido manualmente y recién allí realiza la búsqueda correctamente. ¿Tienes idea a qué se puede deber esto?. Me sucede muy a menudo. ¿Puedo corregirlo dealguna manera?
Gracias
Respuesta
1
Idea, lo que se dice idea... pocas. Mejor sería que viera y revisara las rutinas, ahí seguramente está la explicación.
Revisa si estás trabajando con modo cálculo automático.
Revisa si haces mención en la rutina a la hoja activa o tiene nombre. Es mejor que diga:
Sheets("Hoja2")... que ActiveSheet ya que podrías estar parado en otra hoja.
Con qué fórmula estás haciendo la búsqueda. Si se contempla que la tabla esté ordenada o no.
Si aún así no se resuelve podes enviarme el libro a mi correo.
Hola Elsa Matilde. Gracias por contestar y prdón por la demora.La rutina de "alta" de datos, o sea los datos se copian de una hoja que emula un formulario a otras hojas que funcionan como bases de datos para diferentes fines es la siguiente. Quisiera que me digas si hay algún error. Gracias
Sub Alta_Datos_1()
Application.ScreenUpdating = False
Sheets("Alta").Select
If Cells(2, 2).Value = "" Then
Range("B2").Select
Else
If Cells(44, 2).Value = "" Then
MsgBox ("DEBE INTRODUCIR EL CURSO Y LA DIVISIÓN")
Range("B2").Select
Else
Sheets("Alta").Select
If Cells(2, 2) <> "" Then
Range("F53:F140").Select
SElection.Copy
Sheets("Base Secretaría").Select
Fila = Cells(1, 90).Value
Cells(Fila, 1).Select
SElection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Range("A1:AS1000,CI1:CI1000").Select
SElection.Copy
Sheets("Base Administración").Select
Range("A1").Select
ActiveSheet.Paste
Range("A1:AT1000").Select
SElection.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("B2") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal
Range("A1").Select
Sheets("Base Secretaría").Select
Range("A1").Select
Sheets("Alta").Select
Range("F48:F51").Select
SElection.Copy
Sheets("Base Calificaciones Proceso").Select
Fila = Cells(1, 221).Value
Cells(Fila, 1).Select
SElection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Range("A1").Select
Sheets("Alta").Select
Range("F48:F51").Select
SElection.Copy
Sheets("Base").Select
Fila = Cells(1, 207).Value
Cells(Fila, 1).Select
SElection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Range("A1").Select
Sheets("Alta").Select
Range("B2:B7,B9:B45,B46:B52,B58:B90").Select
SElection.ClearContents
Range("B2").Select
Application.CutCopyMode = False
End If
End If
End If
End Sub
Esto no parece corresponder a la consulta anterior, ¿verdad?
Bueno, te devuelvo la rutina con comentarios donde veo instrucciones que 'quizás' no es lo que se quiere hacer. No están mal, solo coloqué los comentarios para ayudarte a pensar y que analices lo que estás haciendo.
Sub Alta_Datos_1()
Application.ScreenUpdating = False
Sheets("Alta").Select
'si B2= "" se selecciona, pero no se hace nada
If Cells(2, 2).Value = "" Then
Range("B2").Select
Else
'si B2 <> "" y B44 = "" se selecciona B2 y no se hace nada
If Cells(44, 2).Value = "" Then
MsgBox ("DEBE INTRODUCIR EL CURSO Y LA DIVISIÓN")
Range("B2").Select
Else
'si B2 <> "" y B44 <> "" .. nuevamente se pregunta
Sheets("Alta").Select
'ya sabemos hasta aquí que B2 <> "" (no hace falta volver a preguntar), se selecciona F53...
If Cells(2, 2) <> "" Then
Range("F53:F140").Select
Selection.Copy
Sheets("Base Secretaría").Select
'se guarda como fila el CONTENIDO de la celda col 90 y fila 1
fila = Cells(1, 90).Value
'ese CONTENIDO es el nro de fila?
Cells(fila, 1).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Range("A1:AS1000,CI1:CI1000").Select
'acá estamos copiando qué?
Selection.Copy
Sheets("Base Administración").Select
Range("A1").Select
ActiveSheet.Paste
'es mejor esta instrucción:
Selection.Copy Destination:=Sheets("Base Administración").Range("A1")
Sheets("Base Administración").Select
Range("A1:AT1000").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("B2") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal
Range("A1").Select
'porqué seleccionar una hoja para irte a seleccionar otra?
Sheets("Base Secretaría").Select
Range("A1").Select
Sheets("Alta").Select
Range("F48:F51").Select
Selection.Copy
Sheets("Base Calificaciones Proceso").Select
'nuevamente estamos colocando como fila el CONTENIDO
fila = Cells(1, 221).Value
Cells(fila, 1).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Range("A1").Select
Sheets("Alta").Select
Range("F48:F51").Select
Selection.Copy
Sheets("Base").Select
fila = Cells(1, 207).Value
Cells(fila, 1).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Range("A1").Select
Sheets("Alta").Select
Range("B2:B7,B9:B45,B46:B52,B58:B90").Select
Selection.ClearContents
Range("B2").Select
Application.CutCopyMode = False
End If
End If
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas