Ejecutar macro en un rango específico de una hoja

Cordial saludo, agradezco el tiempo que puedan dedicar a mi inquietud.

En estos momentos estoy realizando una macro que se ejecute cada vez que el valor de una celda sea <> 0, mediante un Do While, en el evento change de la hoja. La macro consiste en verificar si no se dejaron celdas en blanco y si fuese el caso deje un mensaje. Esa parte funciona bien, pero resulta que cuando escribo en otra parte de la hoja (es decir fuera del rango "I4:Q32") también se ejecuta la macro. Cómo debo hacer para que la macro se ejecute sólo si estoy en el rango indicado. He estado mirando respuestas de otras preguntas, pero no he podido.

Este es el código que tengo hasta el momento.

Private Sub Worksheet_Change(ByVal Target As Range)
' range("$I$4:$Q$32")
fila = 4
columna = 17
rango = Range("$I$4:$Q$32") 'en estos momentos no sé donde utilizarlo
Application.ScreenUpdating = False
Do While Cells(fila, columna) <> 0
Cells(fila, columna).Select
Range(Selection, Selection.Offset(0, -8)).Activate
For Each c In Selection
If c.Value = "" Then cuenta = cuenta + 1
Next c
If cuenta > 0 Then MsgBox "Hay " & cuenta & " Celdas vacías"
ActiveCell.Offset(1, 0).Select
Do While ActiveCell <> ""
ActiveCell.Offset(0, 1).Select
Loop
fila = ActiveCell.Row
Loop
Application.ScreenUpdating = True
End Sub

Muchas gracias por el tiempo ofrecido.

1 respuesta

Respuesta
1

Colocá como primeras instrucciones el rango donde debe ejecutarse:

Private Sub Worksheet_Change(ByVal Target As Range)
rango = "$I$4:$Q$32"

'si la celda modificada no se encuentra en ese rango finaliza el proceso
If Intersect(Target, Range(rango)) Is Nothing Then Exit Sub


'aquí sigue tu código


End Sub



Sdos y no olvides finalizar la consulta

Excelente!! Muchas gracias por su correcta y pronta respuesta!

Mi equivocación siempre estuvo en donde ubicar esa línea.

Bendiciones! Muchas gracias!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas