xl_ cómo ejecutar una macro al cambiar de determinadas celdas

2
03/01/14 XL: Cómo ejecutar una macro al cambiar de determinadas celdas support.microsoft.com/kb/142154/es 1/2 Al usar este sitio Ud. acepta el uso de cookies para análisis, contenido personalizado y publicidad. Saber más A ds by V iew P assw ord A d O ptions Id. de artículo: 142154 - Ver los productos a los que se aplica este artículo En Microsoft Excel , puede crear una macro que se llama sólo cuando se introduce un valor en una celda en una hoja en particular o en una hoja que está abierta actualmente. Sin embargo, tenga en cuenta que no debe llamarse macros innecesariamente porque ralentizan el rendimiento de Excel. Microsoft proporciona ejemplos de programación únicamente con fines ilustrativos, sin ninguna garantía expresa o implícita. Esto incluye, pero no se limita a, las garantías implícitas de comerciabilidad o idoneidad para un fin determinado. Este artículo asume 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, una macro sólo debe ejecutarse cuando un determinado número de celdas tiene introducidos valores (denominadas "celdas clave" en este documento). Para evitar una gran macro cada vez que se introduce un valor en una celda de una hoja, debe comprobar si el ActiveCell es una de las celdas de la claves. Para ello, utilice el método Intersect ActiveCell y el rango que contiene las celdas claves para comprobar que el ActiveCell es una de las celdas de la claves. Si el ActiveCell está en el rango que contiene las celdas claves, puede llamar a la macro. Para ejecutar este ejemplo de macro: 1. Abra un nuevo libro. 2. De Sheet1 en la celda A11, escriba la fórmula siguiente: =SUM(A1:A10) 3. Copie esta fórmula en las celdas B11, C11 y D11. En el ejemplo utilizado aquí, la macro hace que el color de fondo de las celdas A11, B11 y C11 para cambiar a rojo (o ColorIndex 3) si el valor de esa celda es mayor que 50; de lo contrario, el color de fondo de la celda será normal. Esto se consigue mediante la comprobación de las entradas de las celdas a1: a10, B1: B10 y C1: C10. Cada vez que se realiza una entrada en cualquier celda de Sheet1, se ejecuta la macro DidKeyCellsChange. Esta macro se determina si el ActiveCell está en el rango de celdas claves (a1: C10). Si es así, la macro KeyCellsChanged se llama para volver a evaluar las células A11:C11. Las siguientes macros colaboran para llevar a cabo esta funcionalidad. La macro "Auto_abrir" se debe ejecutar una vez en el orden de las macros se llama. 4. Inserte una nueva hoja de módulo. En Microsoft Excel 97, en el menú Herramientas , señale Macroy, a continuación, haga clic en Editor de Visual Basic. En el Editor, haga clic en módulo en el menú Insertar . En las versiones 5.0 y 7.0 de Microsoft Excel, 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: 6. Guarde el libro y ciérrelo. 7. Abra el libro. Esto hará que la macro Auto_abrir se ejecute. 8. En la celda A1, escriba 60. Celda A11 debería cambiar a un color de fondo rojo porque cambió una celda en el rango de KeyCells y el valor de la celda A11 se convirtió en más de 50. 9. En la celda D1, escriba 60 XL: Cómo ejecutar una Macro al cambian determinadas celdas Resumen Más información 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

Upload: jose-estrada

Post on 20-Oct-2015

12 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: XL_ Cómo ejecutar una macro al cambiar de determinadas celdas

03/01/14 XL: Cómo ejecutar una macro al cambiar de determinadas celdas

support.microsoft.com/kb/142154/es 1/2

Al usar este sitio Ud. acepta el uso de cookies para análisis, contenido personalizado y publicidad. Saber más

A ds by V iewPassword A d O ptions

Id. de artículo: 142154 - Ver los productos a los que se aplica este artículo

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

actualmente.

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

Microsoft proporciona ejemplos de programación únicamente con fines ilustrativos, sin ninguna garantía expresa o implícita. Esto incluye, pero no se limita a, las

garantías implícitas de comerciabilidad o idoneidad para un fin determinado. Este artículo asume 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, una macro sólo debe ejecutarse cuando un determinado número de celdas tiene introducidos valores

(denominadas "celdas clave" en este documento). Para evitar una gran macro cada vez que se introduce un valor en una celda de una hoja, debe comprobar si

el ActiveCell es una de las celdas de la claves. Para ello, utilice el método Intersect ActiveCell y el rango que contiene las celdas claves para comprobar que el

ActiveCell es una de las celdas de la claves. Si el ActiveCell está en el rango que contiene las celdas claves, puede llamar a la macro.

Para ejecutar este ejemplo de macro:

1. Abra un nuevo libro.

2. De Sheet1 en la celda A11, escriba la fórmula siguiente:

=SUM(A1:A10)

3. Copie esta fórmula en las celdas B11, C11 y D11.

En el ejemplo utilizado aquí, la macro hace que el color de fondo de las celdas A11, B11 y C11 para cambiar a rojo (o ColorIndex 3) si el valor de esa

celda es mayor que 50; de lo contrario, el color de fondo de la celda será normal. Esto se consigue mediante la comprobación de las entradas de las

celdas a1: a10, B1: B10 y C1: C10. Cada vez que se realiza una entrada en cualquier celda de Sheet1, se ejecuta la macro DidKeyCellsChange. Esta macro

se determina si el ActiveCell está en el rango de celdas claves (a1: C10). Si es así, la macro KeyCellsChanged se llama para volver a evaluar las células

A11:C11.

Las siguientes macros colaboran para llevar a cabo esta funcionalidad. La macro "Auto_abrir" se debe ejecutar una vez en el orden de las macros se

llama.

4. Inserte una nueva hoja de módulo. En Microsoft Excel 97, en el menú Herramientas , señale Macroy, a continuación, haga clic en Editor de Visual Basic.

En el Editor, haga clic en módulo en el menú Insertar . En las versiones 5.0 y 7.0 de Microsoft Excel, 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:

6. Guarde el libro y ciérrelo.

7. Abra el libro.

Esto hará que la macro Auto_abrir se ejecute.

8. En la celda A1, escriba 60.

Celda A11 debería cambiar a un color de fondo rojo porque cambió una celda en el rango de KeyCells y el valor de la celda A11 se convirtió en más de

50.

9. En la celda D1, escriba 60

XL: Cómo ejecutar una Macro al cambiandeterminadas celdas

Resumen

Más información

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 ' Definewhich cells should trigger the KeyCellsChanged macro. KeyCells = "A1:A10, B1:B10, C1:C10" ' If the Activecell is one of thekey cells, call the ' KeyCellsChanged macro. If Not Application.Intersect(ActiveCell, Range(KeyCells)) _ Is Nothing ThenKeyCellsChanged End Sub Sub KeyCellsChanged() Dim Cell as Object ' If the values in A11:C11 are greater than 50... For EachCell 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 IfNext Cell End Sub

Page 2: XL_ Cómo ejecutar una macro al cambiar de determinadas celdas

03/01/14 XL: Cómo ejecutar una macro al cambiar de determinadas celdas

support.microsoft.com/kb/142154/es 2/2

A ds by V iewPassword A d O ptions

A ds by V iewPassword A d O ptions

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

de KeyCells.

En Microsoft Excel versión 7.0, para obtener más información acerca de cómo ejecutar procedimientos cuando se produce un evento, haga clic en la ficha índice

de la Ayuda de Microsoft Excel, escriba el texto siguiente

procedimientos de ejecución

Haga doble clic en el texto adecuado para ir al tema "Ejecución de procedimientos cuando se produce un evento" .

Id. de artículo: 142154 - Última revisión: miércoles, 17 de agosto de 2005 - Versión: 2.1

La información de este ar tículo se refiere a :

Microsoft Excel 98 para MacintoshMicrosoft Excel 97 Standard EditionMicrosoft Excel 95 Standard EditionMicrosoft Excel 5.0 Standard EditionMicrosoft Excel 5.0cMicrosoft Excel 5.0 para MacintoshMicrosoft Excel 5.0a para MacintoshMicrosoft Excel 5.0 Standard Edition

Palabras clave: kbmt kbdtacode kbhowto kbprogramming KB142154 KbMtes

Traducción automáticaIMPORTANTE: 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 nuestrabase 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 queun 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 comoconsecuencia 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 (http://support.microsoft.com/kb/142154/en-us/ )

Renuncia a responsabilidad de los contenidos de la KB sobre productos a los que ya no se ofrece asistencia algunaEl 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.

Referencias

属性