Diferencias entre SelectionChange y Change

Quisiera que me ayudaran con lo siguiente: En una hoja de excel tengo una serie de celdas programadas en VB para excel de tal manera que si modifico una celda las otras se cambian o bloquean.
Por ejemplo:
Tengo una lista desplegable (De validación de datos) y allí tres letras (A, B y C). Cuando escojo A la idea es que se cambien cosas en la hoja, al igual que B y C.
Pero tengo el siguiente problema:
Cuando escojo A (en la lista desplegable) no se cambia nada HASTA que selecciono otra celda (es decir, me cambia es porque tengo SelectionChange) porque mientras me quede parado siempre en la misma celda (que es donde es la lista) pues las cosas no se van a cambiar.
Ahora si uso Change (Private Sub Worksheet_Change(ByVal Target As Range) se me queda dando loops infinitos porque con el cambio de la celda de la lista, se cambian cosas en la página que a su vez se interpretan como cambios y siguen dando loops infinitamente hasta que se traba el computador.
La solución (Que no se estructurarla pero creo saber cómo es) es de alguna manera que el computador sepa cuándo es por cambio humano el valor de las celdas y cuando por programación para que de esa manera no de loops infinitos.
No se, llevo días en estas !

1 Respuesta

Respuesta
1
El evento Change se ejecuta sobre un rango o Target. Tenés que acotar ese rango para que solo actúe en tu celda.
Ej: Solo controlará lo que se modifique en B2, en este caso muestra un mensaje de ejemplo
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$2" Then Exit Sub
'si el cambio se produce en cualquier lugar de la hoja que no sea B2, se cancela el proceso
'las instrucciones de tu rutina para esta celda
MsgBox "Has realizado un cambio en B2"
End Sub
Gracias ! Mil gracias !
La pregunta era un poco más compleja, la verdad no podía escribir todo el código pero con esta opción me fui por otro camino y lo resolví !
Gracias, mil y mil gracias !
Muchisisimas gracias Elsa,
Había intentado todo y lo pude resolver. El problema es que tengo muchísimas variaciones y modificaciones si algo se cambia (algunas cosas por click del usuario y otras automáticas) entonces eso me creaba loops.
Pero con esta opción pude agarrar otro camino y lo resolví ! Muchísimas gracias !
Un abrazo,
Saludos,
Mauricio

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas