Eliminar el contenido de celdas según el contenido de otras

Expertos:

El planteamiento no es mucho más extenso que la pregunta en si misma. Lo que quiero es que si se introducen datos en las celdas; por ejemplo; D5, D6, o D7 se borren, si pongo datos en las celdas D8 o D9

Pero si no hubiese datos en D8 o D9. Sí se mantengas los datos en "D5:D7".

Respuesta
1

Pega esta sub en la ventana de código de la hoja:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$8" Or Target.Address = "$D$9" Then
If Cells(8, "D") <> "" Or Cells(9, "D") <> "" Then
Cells(5, "D") = ""
Cells(6, "D") = ""
Cells(7, "D") = ""
End If
End If

End Sub

Esteban RG. Gracias por tu tiempo. La macro funciona bien tal como yo  plantee la pregunta, pero si se introducen datos de abajo hacia arriba; es decir primero en la celda D8 o D9 y posteriormente en las celdas D5:D7, se mantienen todos los datos.

De todas formas agradezco tu respuesta y valorare. GRACIAS.

Puedes incluir una intuición para que bloqueelas velas superiores si escribes primero en las otras.

No se a que te refieres cuando dices, incluir una intuición; de todas formas estas celdas deben mantenerse libres de fórmulas o condiciones ya que se deben de incluir datos, (o no), manualmente.

Gracias de nuevo.

Perdona, se produjo error al escribir.

Te lo aclaro: Debes incluir una instrucción para bloquear las celdas superiores cuando escribas en las otras.

Ten en cuenta que todas las celdas están bloqueadas por defecto, y cuando actives la protección de la hoja, se quedaran bloqueadas. Lo primero que tienes que hacer es desbloquear todas las celdas donde quieras escribir, (o desbloqueas todas. *Formato de celda,>Protección>Bloquear*)

Ahora el código corregido queda así:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$8" Or Target.Address = "$D$9" Then
ActiveSheet.Unprotect
If Cells(8, "D") <> "" Or Cells(9, "D") <> "" Then
For f = 5 To 7
Cells(f, "D") = ""
Cells(f, "D").Locked = True
Next
Else
For f = 5 To 7
Cells(f, "D").Locked = False
Next
End If
ActiveSheet.Protect
End If

End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas