XL: Cómo ejecutar una macro al cambiar de determinadas celdas

Seleccione idioma Seleccione idioma
Id. de artículo: 142154 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

Resumen

En Microsoft Excel, puede crear una macro que se llama sólo cuando se introduce un valor en una celda en una hoja determinada o en cualquier hoja que está actualmente abierta.

Sin embargo, tenga en cuenta que no debe llamar macros innecesariamente porque ralenticen el rendimiento de Excel.

Más información

Microsoft proporciona ejemplos de programación con fines ilustrativos únicamente, sin ninguna garantía tanto expresa como implícita. Esto incluye, entre otras, las garantías implícitas de comerciabilidad e idoneidad para un fin determinado. Este artículo se supone que está familiarizado con el lenguaje de programación que se muestra y con las herramientas que se utilizan para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden explicarle la funcionalidad de un determinado procedimiento, pero no modificarán estos ejemplos para ofrecer mayor funcionalidad ni crearán procedimientos que cumplan sus requisitos específicos. En muchos casos, debe ejecutar una macro sólo cuando un determinado número de celdas tienen valores introducidos en ellos (denominado como "celdas claves" en este documento). Para impedir que una macro gran ejecuta cada vez que se escribe un valor en una celda de una hoja, debe comprobar si el ActiveCell es uno de las celdas de claves. Para ello, utilice el método Intersect el ActiveCell y el rango que contiene las celdas claves para comprobar que la ActiveCell es una de las celdas claves. Si el ActiveCell está en el rango que contiene las celdas de claves, puede llamar a la macro.

Para ejecutar esta macro de ejemplo:
  1. Abra un libro nuevo.
  2. De Sheet1 en la celda A11, escriba la fórmula siguiente:
    = Sum (a1: A10)
  3. Copie esta fórmula a las celdas B11, C11 y D11.

    En el ejemplo utilizado aquí, la macro hace que el color de fondo de celdas A11, B11 y C11 para cambiar a rojo (o ColorIndex 3) si valor de dicha celda es mayor que 50; en caso contrario, color de fondo de la celda será normal. Para ello, se debe comprobar las entradas en las celdas a1: A10, B1: B10 y C1: C10. Cada vez que se realiza una entrada en cualquier celda de Sheet1, la macro DidKeyCellsChange se ejecuta. Esta macro determina si el ActiveCell está en el rango de celdas claves (a1: C10). Si es, la macro KeyCellsChanged se llama para reevaluar A11:C11 de celdas.

    Las macros siguientes funcionan conjuntamente para realizar esta funcionalidad. Debe ejecutar la macro "Auto_Abrir" una vez para que otras macros al que se va a llamar.
  4. Inserte una nueva hoja de módulo. En Excel 97, en el menú Herramientas , elija macro y, a continuación, haga clic en Editor de Visual Basic . En el Editor, haga clic en módulo en el menú Insertar . En Microsoft Excel versiones 5.0 y 7.0, elija macro en el menú Insertar y, a continuación, haga clic en módulo .
  5. Escriba el siguiente código de macro en la hoja de módulo:
    Sub auto_open()
    
       ' Run the macro DidCellsChange any time a entry is made in a
       ' cell in Sheet1.
       ThisWorkbook.Worksheets("Sheet1").OnEntry = "DidCellsChange"
    
    End Sub
    
    
    Sub DidCellsChange()
      Dim KeyCells as String
       ' Define which cells should trigger the KeyCellsChanged macro.
       KeyCells = "A1:A10, B1:B10, C1:C10"
    
       ' If the Activecell is one of the key cells, call the
       ' KeyCellsChanged macro.
       If Not Application.Intersect(ActiveCell, Range(KeyCells)) _
       Is Nothing Then KeyCellsChanged
    
    End Sub
    
    Sub KeyCellsChanged()
       Dim Cell as Object
       ' If the values in A11:C11 are greater than 50...
       For Each Cell In Range("A11:C11")
       If Cell > 50 Then
    
       ' Make the background color of the cell the 3rd color on the
       ' current palette.
       Cell.Interior.ColorIndex = 3
    
       Else
       ' Otherwise, set the background to none (default).
       Cell.Interior.ColorIndex = xlNone
    
       End If
       Next Cell
    
    End Sub
  6. Guarde el libro y, a continuación, ciérrelo.
  7. Abra el libro.

    Esto hará que la macro Auto_abrir ejecutar.
  8. En la celda A1, escriba 60 .

    Celda A11 debería cambiar a un color de fondo rojo porque ha cambiado una celda del rango KeyCells y el valor de la celda A11 era mayor que 50.
  9. En la celda D1, escriba 60

    No ocurrirá el color del D11, aunque el valor de D11 ahora es mayor que 50 nada. No sucede nada porque la celda D1 no está en el intervalo de KeyCells.

Referencias

En Microsoft Excel versión 7.0, para más información sobre cómo ejecutar procedimientos cuando se produce un evento, haga clic en la ficha índice de Ayuda de Microsoft Excel, escriba el texto siguiente
procedimientos, que se ejecutan
Haga doble clic en el texto adecuado para ir al tema "Ejecutar procedimientos cuando se produce un evento" .

Propiedades

Id. de artículo: 142154 - Última revisión: miércoles, 17 de agosto de 2005 - Versión: 2.1
La información de este artículo se refiere a:
  • Microsoft Excel 98 para Macintosh
  • Microsoft Excel 97 Standard Edition
  • Microsoft Excel 95 Standard Edition
  • Microsoft Excel 5.0 Standard Edition
  • Microsoft Excel 5.0c
  • Microsoft Excel 5.0 para Macintosh
  • Microsoft Excel 5.0a para Macintosh
  • Microsoft Excel 5.0 Standard Edition
Palabras clave: 
kbmt kbdtacode kbhowto kbprogramming KB142154 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 142154
Renuncia a responsabilidad de los contenidos de la KB sobre productos a los que ya no se ofrece asistencia alguna
El presente artículo se escribió para productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com