Condicionante, bloqueo y eliminación de celdas con dos Private Sub Worksheet_Change

Me podrían apoyar en la solución

Adjunto mi archivo que estoy trabajando con la macro, si se observa al ejecutar y/o  poner la condicionante de SI/NO cuando finaliza el proceso se selecciona toda la hoja cuando no debería, porque ejecuta otra macro, a la vez quisiera que la hoja esté bloqueada y que solo los campos en blanco están deshabilitados, que no debería de afectar la macro condicionante al bloqueo de la hoja.

https://mega.nz/#!bnpVWQwL!Y4plv-2LGMthR1THh5nMLKMjFsF_gFGW0BivD73KK-0

Creo es porque se esta usando el Private Sub Worksheet_Change y el Private Sub Worksheet_SelectionChange.

1 Respuesta

Respuesta
1

[Hola

Selecciona todas las celdas porque tú le estás indicando eso con tus macros "Sí" y "No"; asimismo como se seleccionan todas las celdas, incluyendo D5, se dispara también el evento "SelectionChange".

Sugiero explicar exactamente que necesitas/deseas ya que, al ser códigos muy intuitivos es un poco complicado entender lo que te sería útil.

Abraham Valencia

Hola Abraham:

Agradezco antemano tu tiempo.

En relación a la consulta, tengo la hoja de inicio que tiene dos Private Sub Worksheet la cual se ejecuta por separados:

El Private Sub Worksheet_SelectionChange(ByVal Target As Range) lo utilizó para buscar datos de otra hoja, es de una lista de clientes.

Private Sub Worksheet_Change(ByVal Target As Range), utilizo como condicionante en el cambio de una celda G18, que no tiene ninguna relación con la otra.

El problema es cuando ejecuto Private Sub Worksheet_Change(ByVal Target As Range), he probado en una hoja individual que solo tiene esta macro y no tengo ningún problema al terminar de ejecutarlo, pero cuando ejecuto en la hoja que tiene el otro Worksheet_ me selecciona toda la hoja.

A la vez la hoja esta bloqueado pero cuando ejecuto Private Sub Worksheet_Change(ByVal Target As Range) me bloquea y solo tengo bloqueado los campos que indica esta macro.

Espero me puedas ayudar.

Saludos

[Hola

Como para comenzar, cambia así el evento "Selection Change":

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Si la celda elegida es B13:B18 se muestra el Formulario.
   If Target.Rows.Count >= 2 Then Exit Sub
    If Not Intersect(Target, Range("D5")) Is Nothing Then
        Buscador.Show
        'En todo caso no se muestra.
    End If
End Sub

Abraham Valencia

Hola Abraham:

Agradezco tu apoyo en la solucion, tengo una consulta adicional referente a este caso:

Sub SI()
ActiveSheet.Unprotect "123456"
Cells.Select
Selection.Locked = False
Range("E24:E34,H24:H34").Select
Selection.ClearContents
Range("H18").Select
Selection.Locked = True
ActiveSheet.Protect "123456"
Range("G18").Select
End Sub

Sub NO()
ActiveSheet.Unprotect "123456"
Cells.Select
Selection.Locked = False
Range("E24:E34,H24:H34").Select
Selection.ClearContents
Selection.Locked = True
ActiveSheet.Protect "123456"
Range("G18").Select
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$G$18" Then
If UCase(Target.Value) = "SI" Then
SI
ElseIf UCase(Target.Value) = "NO" Then
NO
End If
End If
End Sub

Esta macro hace que se me bloquee celdas de acuerdo a lo condicionante pero quiero que se bloquee toda la hoja y solo este desbloqueada celdas seleccionadas y/o la condicionante, como puedo modificar esta macro.

Saludos.

No queda lo suficientemente claro que celdas quieres "libres" a pesar de tener la hoja protegida y que ocurre cuando se elige "sí" y cuando "no"

Abraham Valencia

Buenos dias Abraham:

La hoja que trabaja esta condicionante es esta:

Los espacios en blancos están desbloqueados, y el resto deben estar bloqueados, al ejecutar la condicionante no me debe desbloquear.

El fondo azul debe esta siempre bloqueado.

Los de fondo blanco deben estar siempre desbloqueado a excepción de lo que indica la macro condicionante, que bloqueado de acuerdo a la macro algunas celdas blancas.

Espero me puedan ayudar con la solución en la macro.

Gracias

Se entiende que las celdas blancas ¿siempre' están desbloqueadas pero tanto en tu macro "sí" como en tu macro "no" intentas bloquear las mismas celdas "D21:D31, G21:G31", ¿en ambos casos lo mismo? ¿Cuál sería entonces la diferencia entre ambas?

O más bien la ida es: Al inicio las blancas desbloqueadas, al poner "Sí" esas cuatro celdas se bloquean pero al poner "no" se deberían volver a desbloquear ¿es así?

Abraham Valencia

Hola Abraham:

Es correcto, las celdas blancas deben estar desbloqueadas, cuando ejecuto el SI/NO se desbloque o bloquea de acuerdo a esta condicionante solo las celdas que indica la condicionante va a jugar  pero las demás celdas blancas siempre estarán desbloqueadas.

Saludos

[Hola nuevamente

Usa las macros así:

Sub SI()
ActiveSheet.Unprotect "123456"
Range("D21:D31,G21:G31").Locked = True
Range("D21:D31,G21:G31").ClearContents
ActiveSheet.Protect "123456"
Range("F15").Select
End Sub
Sub NO()
ActiveSheet.Unprotect "123456"
Range("D21:D31,G21:G31").Locked = False
Range("D21:D31,G21:G31").ClearContents
ActiveSheet.Protect "123456"
Range("F15").Select
End Sub

OJO, si es al revés, solo intercambia Locked True y False, nada más

Abraham Valencia

Hola Abraham:

Se agradece el apoyo, pero hay un pequeño error en la formulación no me bloquea la celda H18 si la condicionante es SI, y me debe desbloquear si es NO.

Es la única observación.

Saludos.

Sugiero tratar de entender que jace cada línea de las macros y verás que agregar una celda más, como la H18, no te tomará ni 45 segundos probablemente. Basta escribir una coma, el H18 y todo dentro de las comilmas.

Dale, intenta.

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas