Hacer varias cosas cuando se cambia el valor de una celda???

20/01/2004 - 09:52 por claudio | Informe spam
Tengo 3 comboboxs hechos con el menú Data\Validation y en
la solapa Settings le pongo List y en Source los valores
(ej. para el combo de años le pongo de 1990 a 2004).
Hasta acá todo bien.
El tema que cuando el usuario elige un valor distinto en
cualquiera de estos combos (que están en A5, A6 y A7), se
tiene que borrar el contenido de las celdas B15, B16, B17
y B18 de la Hoja 1, las celdas C4, C5 y C6 de la Hoja2 y
presionar el botón Refrescar de la Hoja1 (que es un botón
que cree yo llamando a una macro de un programa de
terceros).
Cómo puedo hacer esto???
 

Leer las respuestas

#1 Fernando Arroyo
20/01/2004 - 13:25 | Informe spam
Entiendo que el borrado de celdas tan sólo debe producirse si alguna de las celdas en el rango A5:A7 de Hoja1 cambia su valor ¿?. Si es esto, el siguiente código debería servirte:


Dim vAnterior As Variant

Private Sub Worksheet_Change(ByVal Target As Range)
If Application.Intersect(Target, [A5:A7]) Is Nothing Or Target = vAnterior Then Exit Sub
Application.EnableEvents = False
[B15:B18].ClearContents
Worksheets("Hoja2").[C4:C6].ClearContents
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, [A5:A7]) Is Nothing And Target.Cells.Count = 1 Then vAnterior = Target
End Sub


Tendrías que ponerlo en el módulo de Hoja1, y lo que hace es almacenar en una variable el contenido de la celda en el momento de seleccionarla, y si se cambia su valor borrar las celdas que necesitas (es decir, que si al salir de la celda su valor no ha cambiado, no se borrarán las otras).

Respecto a lo del botón, en principio no parece necesario presionarlo. Dado que dices que llama a otro código, lo único que tendrías que hacer es ejecutar dicho código mediante el método Run del objeto Application. Esta llamada podrías ponerla después de Application.EnableEvents = True
Un saludo.


Fernando Arroyo
MS MVP - Excel

"claudio" escribió en el mensaje news:0c4c01c3df32$af88e8d0$
Tengo 3 comboboxs hechos con el menú Data\Validation y en
la solapa Settings le pongo List y en Source los valores
(ej. para el combo de años le pongo de 1990 a 2004).
Hasta acá todo bien.
El tema que cuando el usuario elige un valor distinto en
cualquiera de estos combos (que están en A5, A6 y A7), se
tiene que borrar el contenido de las celdas B15, B16, B17
y B18 de la Hoja 1, las celdas C4, C5 y C6 de la Hoja2 y
presionar el botón Refrescar de la Hoja1 (que es un botón
que cree yo llamando a una macro de un programa de
terceros).
Cómo puedo hacer esto???

Preguntas similares