Puede darse el caso de que halles alguna incompatibilidad en tu código o proyecto, recuerda probar siempre en un entorno de testing antes aplicar el código al trabajo final.
Solución:
Sí, esto es posible mediante el uso de eventos de la hoja de trabajo:
En el Editor de Visual Basic, abra la hoja de trabajo que le interese (es decir, “BigBoard”) haciendo doble clic en el nombre de la hoja de trabajo en el árbol en la parte superior izquierda. Coloque el siguiente código en el módulo:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Me.Range("D2")) Is Nothing Then Exit Sub
Application.EnableEvents = False 'to prevent endless loop
On Error Goto Finalize 'to re-enable the events
MsgBox "You changed THE CELL!"
End If
Finalize:
Application.EnableEvents = True
End Sub
Otra opción es
Private Sub Worksheet_Change(ByVal Target As Range)
IF Target.Address = "$D$2" Then
MsgBox("Cell D2 Has Changed.")
End If
End Sub
Creo que esto usa menos recursos que Intersect
que será útil si su hoja de trabajo cambia mucho.
En un intento de encontrar una manera de hacer que la celda de destino para el método de intersección sea una tabla de nombres array, me topé con una manera simple de ejecutar algo cuando cambia CUALQUIER celda o conjunto de celdas en una hoja en particular. Este código también se coloca en el módulo de la hoja de trabajo:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 0 Then
'mycode here
end if
end sub