La macro que me realizaste esta funcionando de la siguiente manera

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rango As Range
If Target = Range("C15") Then
Application.EnableEvents = False
If Target = "" Then
Range("C16:C31,F15:F30") = ""
Else
Set Rango = Sheets("SELECCIONADO").Range("CEDULA1").Find(Target, LookAt:=xlWhole)
If Not Rango Is Nothing Then
Range("C16") = Sheets("SELECCIONADO").Cells(Rango.Row, "C")
Range("C17") = Sheets("SELECCIONADO").Cells(Rango.Row, "D")
Range("C18") = Sheets("SELECCIONADO").Cells(Rango.Row, "E")
Range("C19") = Sheets("SELECCIONADO").Cells(Rango.Row, "F")
Range("C20") = Sheets("SELECCIONADO").Cells(Rango.Row, "G")
Range("C21") = Sheets("SELECCIONADO").Cells(Rango.Row, "H")
Range("C22") = Sheets("SELECCIONADO").Cells(Rango.Row, "I")
Range("C23") = Sheets("SELECCIONADO").Cells(Rango.Row, "J")
Range("C24") = Sheets("SELECCIONADO").Cells(Rango.Row, "K")
Range("C25") = Sheets("SELECCIONADO").Cells(Rango.Row, "L")
Range("C26") = Sheets("SELECCIONADO").Cells(Rango.Row, "M")
Range("C27") = Sheets("SELECCIONADO").Cells(Rango.Row, "N")
Range("C28") = Sheets("SELECCIONADO").Cells(Rango.Row, "O")
Range("C29") = Sheets("SELECCIONADO").Cells(Rango.Row, "P")
Range("C30") = Sheets("SELECCIONADO").Cells(Rango.Row, "Q")
Range("C31") = Sheets("SELECCIONADO").Cells(Rango.Row, "R")
Range("F15") = Sheets("SELECCIONADO").Cells(Rango.Row, "S")
Range("F16") = Sheets("SELECCIONADO").Cells(Rango.Row, "T")
Range("F17") = Sheets("SELECCIONADO").Cells(Rango.Row, "U")
Range("F18") = Sheets("SELECCIONADO").Cells(Rango.Row, "V")
Range("F19") = Sheets("SELECCIONADO").Cells(Rango.Row, "W")
Range("F20") = Sheets("SELECCIONADO").Cells(Rango.Row, "X")
Range("F21") = Sheets("SELECCIONADO").Cells(Rango.Row, "Y")
Range("F22") = Sheets("SELECCIONADO").Cells(Rango.Row, "Z")
Range("F23") = Sheets("SELECCIONADO").Cells(Rango.Row, "AA")
Range("F24") = Sheets("SELECCIONADO").Cells(Rango.Row, "AB")
Range("F25") = Sheets("SELECCIONADO").Cells(Rango.Row, "AC")
Range("F26") = Sheets("SELECCIONADO").Cells(Rango.Row, "AD")
Range("F27") = Sheets("SELECCIONADO").Cells(Rango.Row, "AE")
Range("F28") = Sheets("SELECCIONADO").Cells(Rango.Row, "AF")
Else
MsgBox ("No se encuentra la cédula: " & Target)
Range("C16:C31,F15:F30") = ""
End If
End If
Application.EnableEvents = True
End If
End Sub

ella me muestra cuando coloco la cedula en c15 de la hoja registrarseleccionado todos los datos de esa cedula en las celdas antes reflejadas si existe ; si no existe es un trabajador nuevo ya seleccionado pero quiero que sea también para editarla y enviarla a donde estaba

también tengo un botón que envía los datos mientras no se repita la cedula los envía si ya existe la cedula no los envía es la siguiente

Sub registrarbasedatos()
If Range("C15") <> "" Then
Application.ScreenUpdating = False
fila = Application.Match(Range("C15"), Sheets("SELECCIONADO").Columns("B"), 0)
If Not IsError(fila) Then
MsgBox "Ya existe"
Else
Range("C15:C31").Select
Selection.Copy
Sheets("SELECCIONADO").Select
ActiveWindow.SmallScroll ToRight:=-15
Range("B2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
Sheets("REGISTRARSELECCIONADO").Select
Range("F15:F27").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("SELECCIONADO").Select
ActiveWindow.SmallScroll ToRight:=15
Range("S2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
ActiveWindow.SmallScroll ToRight:=-15
Rows("2:2").Select
Application.CutCopyMode = False
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A2").Select
Sheets("REGISTRARSELECCIONADO").Select
Range("C15:C31").Select
Selection.ClearContents
Range("F15:F27").Select
Selection.ClearContents
Range("F30").Select
End If
End If
End Sub

allí te envío el archivo con una mejor explicación ya en la hoja seleccionado hay datos lo que quiero es que se haga todo sin tanto movimientos con un solo boton

1 Respuesta

Respuesta
1

He estado muy atareado por preguntas y otros motivos estos días. Acabo de mirar la pregunta. El fichero es muy abultado, no puedo mandarte varias correcciones porque ocupan mucho sitio del que dispongo en mi cuenta de correos. De momento he mirado simplemente que se pueden simplificar algunas líneas. Todas las que van de

Range("C16") = Sheets("SELECCIONADO").Cells(Rango.Row, "C")

a

Range("F28") = Sheets("SELECCIONADO").Cells(Rango.Row, "AF")

En la macro Private Sub Worksheet_Change(ByVal Target As Range) sen la hoja "RegistrarSeleccionado" se pueden cambiar por estas dos

 Range("C16:C31") = WorksheetFunction.Transpose(Sheets("seleccionado").Range("C" & Rango.Row & ":R" & Rango.Row))
 Range("F15:F28") = WorksheetFunction.Transpose(Sheets("seleccionado").Range("S" & Rango.Row & ":AF" & Rango.Row))

Y ahora quiero algunas aclaraciones.

Tu pones un número de cedula en C15. Pueden pasar tres cosas

a) Que el número exista en "Seleccionado"

b) Que exista en "Extrabajadores"

c) Que no exista en ninguna de las dos

Si se da a o b importamos los datos, si se da c ponemos las celdas en blanco.

Hasta ahora avisábamos si no se encontraba en "seleccionado".

¿Qué hacemos ahora?

1) Avisar que esta en seleccionado, en extrabajadores o no está

2) Avisar solo alguno de los tres casos

3) No avisar en ninguno.

Espera, veo que es más grave. Si pretendo guardar el libro me dice que hay mil cosas que no se guardarán, formas y reglas de validación de otros libros. Lo mejor será que escriba aquí cómo quedarán las nuevas macros y tu las copias en tu libro. También veo que las macros de otros a veces causan errores en las mías, eso es falta de coordinación no quiero decir que estén mal, pero tendré que adaptarlo todo.

Bueno, de momento dime que hacemos con los avisos que hay que dar.

Otra cosa. Hay una columna llamada Codigo_de_Cargo que no sé quién la crea. Esa columna esta en "seleccionado" pero no en "extrabajadores". Es que eso hace que no coincidan las columnas de esas dos hojas y tal vez sería mejor si lo hiciesen.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas