Ayuda con Visual Basic - Worksheet_Change con varias celdas?

13/01/2007 - 06:45 por Daap | Informe spam
Hola, soy nuevo acá y también estoy recién aprendiendo algo de
macros y de programación en Visual Basic...

Necesito saber si es posible ejecutar un evento en caso de que una
celda cambie de valor, pero en el caso de que sean varias celdas (y
varios eventos para cada una...)

Hasta ahora lo había intentado con Worksheet_Change en el código de
mi hoja de trabajo, y me funciona: (aquí va el código)

________________________________
Option Explicit
Private Sub Worksheet_Calculate()
Worksheet_Change Range("F30")
End Sub

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Dim O As Long
O = 0

' Determina el evento para observar una celda
If Target.Address = Range("F30").Address Then

' Accion a tomar
Select Case Target.Value
Case Is < O
MsgBox "Especificar si es cruzado o no!"
Case Is = O
Macro3
Case Is > O
Macro4
End Select
End If
End Sub
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

El problema es que esto sólo me sirve para los eventos relacionados
con una celda, y son tres celdas a las que les quiero dar distintos
eventos según sus valores.

¿Es posible usar Worksheet_Change pero usando otros parámetros
(escoger todas las celdas que necesito), o hacer alguna modificación a
lo que tengo, para incluir más celdas y más eventos?

Gracias de antemano, saludos!
 

Leer las respuestas

#1 Héctor Miguel
14/01/2007 - 00:45 | Informe spam
hola, 'anonimo/a' !

... es posible ejecutar un evento en caso de que una celda cambie de valor
pero en el caso de que sean varias celdas (y varios eventos para cada una...)
Hasta ahora lo habia intentado con Worksheet_Change en el codigo de mi hoja de trabajo, y me funciona...
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
[...]
' Determina el evento para observar una celda
If Target.Address = Range("F30").Address Then
[...]
El problema es que esto solo me sirve para los eventos relacionados con una celda
y son tres celdas a las que les quiero dar distintos eventos según sus valores...



p.e. usando el mismo procedimiento/evento '_change' en el modulo de codigo de 'esa' hoja...

Select Case Target.Address
Case "$F$30"
' aqui las acciones para la celda F30... '
Case "$G$45"
' aqui las acciones para la celda G45... '
' mas 'cases' segun direccion de celda 'unica' ... '
End Select

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

Preguntas similares