Saltar al contenido

ejecutar Excel VBA macro automáticamente cada vez que se cambia una celda

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 Intersectque 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

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *