Macro en Excel para eliminar registros en diferentes hojas y manipular la información

Hola Elsa Matilde; Que bueno es poder contar contigo.
Necesito que me ayudes en lo siguiente:
En la hoja1 tengo unos controles; en otras seis hojas tengo bases de datos, por favor necesito una macro donde yo al escribir el nombre del paciente en la "hoja1 d6" me borre los registros de ese paciente en las otras hojas. Las hojas tienen nombres diferentes y en la columna A aparecen relacionados los nombres de los pacientes. Perdoname si abuso, ¿puedes regalarme una macro que me permita deshabilitar el aviso de actualizar vínculos al abrir un libro y poderlos autorizar después de abierto cuando lo necesite?
Ayudame, Te agradezco.
JCOA

1 Respuesta

Respuesta
1
La rutina que te adjunto tendrás que colocarla en la hoja1, y lo que hará es controlar el cambio en la celda D6 (ajusta estas referencias de ser necesario)
Lo que hará es buscar en todas las hojas de tu libro. Si debe evitar alguna hoja agregala en la instrucción donde se evita la Hoja1
Private Sub Worksheet_Change(ByVal Target As Range)
Dim hojita, midato
Dim dato, rango As String
'controla cambios en D6
If Target.Address = "$D$6" Then
dato = Target.Value
'se buscará en la col A
rango = "A1:A65000"
For Each hojita In Worksheets
'se evita la hoja1
If hojita.Name <> "Hoja1" Then
Set midato = hojita.Range(rango).Find(dato, LookIn:=xlValues, LookAt:=xlWhole)
'si el dato existe......
If Not (midato) Is Nothing Then
midato.EntireRow.Delete
End If
End If
Next
Set midato = Nothing
End If
End Sub
Y esta de regalo:
Private Sub Workbook_Open()
'elimina los avisos
Application.DisplayAlerts = False
End Sub
Si esta no es la que buscabas, consúltame nuevamente
Elsa Matilde, muchas gracias por responder a mi inquietud.
Te agradezco la respuesta que me has dado, pero en realidad no era la instrucción que yo esperaba. En la misma celda d6 de la hoja1 pasan muchas cosas como búsqueda y actualización de datos, la verdad me gustaría una macro que me borre las filas de ese paciente en las demás hojas pero no como evento. Los nombres de las hojas son "Dps","Lcs1","Lcs2", Dcs","Fls". En todas las hojas los nombres de los pacientes están relacionados en la columna "A" . Disculpame la molestia.
JCOA
Si tuvieras mi manual ya lo tendrías resuelto :-)
Solo es cuestión de cambiarla de lugar y ahora irá en un módulo. Podrás asociarla a un botón o atajo de teclado.
Sub eliminaRegistros()
Dim dato, rango As String
Dim hojita
Dim midato
'guarda el valor de la celda D6
dato = ActiveSheet.Range("D6").Value
rango = "A1:A65000"
For Each hojita In Worksheets
'solo buscará en las siguientes hojas
If hojita.Name = "Dps" Or hojita.Name = "Lcs1" Or hojita.Name = "Lcs2" Or hojita.Name = "Dcs" Or hojita.Name = "Fls" Then
'opcional: solo evita la Hoja1
'If hojita.Name <> "Hoja1" Then
Set midato = hojita.Range(rango).Find(dato, LookIn:=xlValues, LookAt:=xlWhole)
'si el dato existe......
If Not (midato) Is Nothing Then
midato.EntireRow.Delete
End If
End If
Next
Set midato = Nothing

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas