¿Cómo evitar que se seleccione una celda?

Soy nueva en este foro y me gustaría saber lo más pronto posible como puedo hacer una macro que no me permita seleccionar una celda. ¿Alguien podrá ayudarme?

Respuesta

[Hola

Si usas la protección de una hoja y desactivas la selección de celdas (en el menú de opciones que sale al proteger la hoja) lograrás el efecto esperado. Del mismo modo puedes capturar eso con la grabadora de macros. ¿O es algo distinto lo que deseas?

Abraham Valencia

2 respuestas más de otros expertos

Respuesta
1

Esta puede ser una opción.

Pon el siguiente código en los eventos de tu hoja. Cambia "B3" por la celda que no vas a permitir seleccionar. También cambia "A1" por la celda que quieras para que el cursor se dirija a esa celda.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("B3")) Is Nothing Then
        MsgBox "No se puede seleccionar esta celda"
        Range("A1").Select
    End If
End Sub

Si son  varias celdas que no vas a permitir seleccionar, puedes cambiar "B3" por un rango, por ejemplo "B3:B10"



Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. En el panel del lado derecho copia la macro

Avísame cualquier duda


Mucha muchas gracias por su ayuda y tomarse el tiempo de explicarme como colocar todo pero si no es mucha molestia no hay un código que sea la contra parte de este osea que te permita seleccionar?

¿Cómo?

Ya no entendí.

Si la celda es seleccionable quieres seleccionarla. O más bien si la celda no es seleccionable y la quieres seleccionar que te pregunte si la quieres seleccionar y si respondes que sí, ¿entonces qué te permita seleccionarla?

Cuando digo lo contrario del código me refiero a que como este código no me permite seleccionar, ¿quiero uno que si me permita seleccionar digamos que es como para desactivar el primer código me entiende?

Si el código no te permite seleccionar la celda B3, para desactivarlo puede ser:

- Borrar el código

- Desactivar las macros antes de abrir el archivo

- Modificar le código, cambiar B3 por Z1 (o cualquier otra celda)

- Poner un nombre en el Administrador de nombres para la celda B3, el código quedaría así:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("celda")) Is Nothing Then
        MsgBox "No se puede seleccionar esta celda"
        Range("A1").Select
    End If
End Sub

En el administrador de nombres quedaría así:

Entonces si quieres seleccionar la celda B3, cambiarías en el Administrador de nombres en el Nombre celda, el $B$3 por $B$4


Y ya por último quitar ese código; y utilizar estos 2:

Para proteger la celda:

Sub Macro8()
'Para proteger la celda
    ActiveSheet.Unprotect "abc"
    Cells.Locked = False
    Range("B3").Locked = True
    ActiveSheet.Protect "abc", DrawingObjects:=True, Contents:=True, Scenarios:=True
    ActiveSheet.EnableSelection = xlUnlockedCells
End Sub

Para desproteger la celda:

Sub Macro9()
'Para DESproteger la celda
    ActiveSheet.Unprotect "abc"
    Cells.Locked = False
    Range("B3").Locked = False
    ActiveSheet.Protect "abc", DrawingObjects:=True, Contents:=True, Scenarios:=True
    ActiveSheet.EnableSelection = xlUnlockedCells
End Sub

Nota: La hoja deberá quedar bloqueada. Cambia en las macros "abc" por el password que desees.

Osea tengo una planilla que tiene una serie de datos entonces si mi columna es mayor que 0 no le va a permitir seleccionarla pero si es 0 si lo podrá seleccionar me entendió mejor?

Esto es tu petición original:

Como puedo hacer una macro que no me permita seleccionar una celda.

Ahora ya tiene más sentido. Utiliza la siguiente macro

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Columns("B")) Is Nothing Then
        If Target.Count > 100 Then Exit Sub
        existe = False
        For Each c In Target
            If c.Value > 0 Then
                MsgBox "No se puede seleccionar esta celda"
                c.Offset(0, 1).Select
            End If
        Next
    End If
End Sub

Cambia en la macro "B" por la columna que quieras validar.

Sal u dos

Mil gracias!

Una pregunta Señor Dante y Disculpe que lo este moletando tanto enserio pero en dado caso que quiera que este dicho código no me deje seleccionar 2 columnas a la vez. Supongamos que tengo 2 columnas(Nombre"A" y Edad"B") y el código debe ser capaz de dejarme seleccionar tanto como la celda de la columna A y una celda de la columna B en dado caso de que la la celda de la columna B tenga un 0, si el mayor a 0 (Ejemplo: 15) que no me deje seleccionar. No se si me explico

Prueba con este código

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Columns("A:B")) Is Nothing Then
        If Target.Count > 100 Then Exit Sub
        existe = False
        For Each c In Target
            If Cells(c.Row, "B").Value > 0 Then
                MsgBox "No se puede seleccionar esta celda"
                Cells(c.Row, "C").Select
            End If
        Next
    End If
End Sub

sal u dos

Respuesta
1

Como estás te puede interesar ya que estás en el proceso de aprendizaje, algo básico que es como hacer referencia a celdas, filas columnas en vba, dale una mirada tal vez sea útil

https://youtu.be/UuyFcJnv5MM    

https://programarexcel.com descarga gratis cientos de ejemplos de macros que puedes adaptar a lo que necesites

suscribe https://youtube.com/programarexcel  

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas