¿Cómo borrar el contenido de una celda al darle click sobre esa misma celda?

Con una macro que haga lo siguiente:

En una hoja de excel. En el rango A3:M16 me gustaría que cuando presione click sobre cualquier celda de este rango borre el contenido de dicha celda. Esto para eliminar valores que cotejo.

3 respuestas

Respuesta
3

Entra al Editor de macros (menú Programador/Desarrollador o con atajo ALT+ F11)

Selecciona el objeto HOJA donde trabajarás y allí copia el siguiente código:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'x Elsamatilde
On Error Resume Next
'solo se ejecuta de a 1 celda x vez
If Target.Count > 1 Then Exit Sub
'si la selección está en el rango se borra el contenido de la celda
If Not Intersect(Target, Range("A3:M16")) Is Nothing Then
    Target = ""
End If
End Sub

Sdos y no olvides valorar la respuesta (al pie encontrarás botones con opciones Excelente o bueno)

Elsa

* Te invito a mirar los videos 45 a 48 de mi canal con ejemplos de los eventos de Hoja.

¡Gracias!

Elsa Matilde. Era eso exactamente agradezco que te tomaras parte de tu tiempo para ayudarme.

¡ Ya mismo mismo veré los videos !

Si bien la consulta ya está cerrada no quiero dejar de comentar, para aquellos que puedan querer utilizarla para borrar más de una celda, que el evento SelectionChange se debe utilizar con cuidado ...

La macro de Dante es algo riesgosa al permitir el borrado de más de 1 celda sin una pregunta previa de confirmación para no borrar datos que nos hacen falta. Recordemos que no se puede deshacer un paso ejecutado con macro.

Si seleccionas una fila o columna completa, supongamos que para dar un formato, se te borran TODOS los datos dentro de ese rango en la tabla... y ni hablar si intentas copiar el rango o la hoja para pegarlo en otro destino... TODA tu tabla desaparece.

Debieran agregar algo así antes del bucle For Each ...

    sino = MsgBox("¿Confirmas borrar la selección completa?", vbYesNo)
    If sino <> vbYes Then Exit Sub

Sdos!

Respuesta
1

Entiendo que la petición es para una celda.

Pero me gustaría contribuir con una opción cuando seleccionan más de una celda. Tal vez, no se requiera para este caso en particular, pero puede ayudar a alguien más con un escenario similar, donde necesite hacer lo mismo, pero para varias celdas, igual y funciona para una sola celda.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim rng As Range, c As Range
  Set rng = Intersect(Target, Range("A3:M16"))
  If Not rng Is Nothing Then
    For Each c In rng
      c.Value = ""
    Next
  End If
End Sub

¡Gracias!

Me funciono, solo que si copio y pego valores en ese rango parce que la macro entra en un ciclo repetitivo,

Te agradezco Dante.

Si copias valores en esa celdas, es como si las "seleccionaras", entonces las borra.

En mis comentarios puse "pero puede ayudar a alguien más con un escenario similar, donde necesite hacer lo mismo, pero para varias celdas".

Y como ya he comentado anteriormente, cada solución puede tener ventajas o desventajas.

Respuesta

If you click a cell and then press DELETE or BACKSPACE, you clear the cell contents without removing any cell formats or cell comments.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas