- 9/28/2020
- 3 minutos para leer
-
- s
- C
- A
- Se aplica a: Microsoft Office Excel 2007, Microsoft Office Excel 2003, Microsoft Office Excel 2002, Excel 97
Nota
Office 365 ProPlus pasa a llamarse Microsoft 365 Apps for enterprise. Para obtener más información sobre este cambio, lea esta publicación del blog.
Resumen
Microsoft Excel 2002 y las versiones posteriores de Excel eliminan las celdas en un bucle «For Each…Next» de una forma diferente a como lo hace Microsoft Excel 97 y las versiones anteriores de Excel.
Este artículo describe las diferencias y proporciona un ejemplo de macro de Visual Basic para Aplicaciones que ilustra cómo eliminar celdas en un bucle.
Más información
Microsoft proporciona ejemplos de programación sólo con fines ilustrativos, sin garantía expresa o implícita. Esto incluye, pero no se limita a, las garantías implícitas de comerciabilidad o idoneidad para un propósito particular. Este artículo asume que usted está familiarizado con el lenguaje de programación que se está demostrando y con las herramientas que se utilizan para crear y depurar procedimientos. Los ingenieros de soporte de Microsoft pueden ayudar a explicar la funcionalidad de un procedimiento concreto. Sin embargo, no modificarán estos ejemplos para proporcionar una funcionalidad añadida o construir procedimientos para satisfacer sus requisitos específicos.
Datos de muestra
Para utilizar la macro de este artículo, escriba los siguientes datos de muestra en una hoja de cálculo:
A1: a B1: 1A2: b B2: 2A3: x B3: 3A4: x B4: 4A5: c B5: 5A6: x B6: 6A7: d B7: 7A8: x B8: 8A9: x B9: 9A10: e B10: 10
Macro de muestra
En un nuevo módulo de macro, escriba la siguiente macro.
Comportamiento de la macro de ejemplo en Excel 2002 y en versiones posteriores de Excel
Cuando se ejecuta la macro DeleteCells en Excel 2002 y en versiones posteriores de Excel, sólo se eliminan las filas 3, 6 y 8. Aunque las filas 4 y 9 contienen una «x» en la columna A, la macro no borra las filas. Los resultados de la macro son los siguientes:
A1: a B1: 1A2: b B2: 2A3: x B3: 4A4: c B4: 5A5: d B5: 7A6: x B6: 9A7: e B7: 10
Cuando Microsoft Excel borra la fila 3, todas las celdas suben una fila. Por ejemplo, la celda A3 asume el contenido de la celda A4, la celda A4 asume el contenido de la celda A5, y así sucesivamente. Después de que el bucle For Each…Next evalúa una celda, evalúa la siguiente celda; por lo tanto, cuando las celdas se desplazan, pueden ser omitidas por el bucle.
Comportamiento de la macro de ejemplo en Microsoft Excel 5.0 y Microsoft Excel 7.0
Cuando se ejecuta la macro DeleteCells en Excel 5.0 y en Excel 7.0, la macro elimina todas las filas que contienen una «x». Los resultados de la macro son los siguientes:
A1: a B1: 1A2: b B2: 2A3: c B3: 5A4: d B4: 7A5: e B5: 10
Cuando se borra la fila 3, todas las celdas suben una fila. Entonces, la celda A3 asume el contenido de la celda A4, la celda A4 asume el contenido de la celda A5, y así sucesivamente.
Sin embargo, a diferencia del comportamiento del bucle en Excel 2002 y en versiones posteriores de Excel, cuando el bucle «For Each…Next» evalúa una celda en Excel 5.0 y en Excel 7.0, el bucle reevalúa la celda si se borra en el bucle. Por lo tanto, las celdas no se omiten.
Método recomendado para utilizar un bucle para eliminar celdas
Utilice la siguiente macro cuando desee utilizar un bucle para eliminar celdas:
Los resultados de esta macro en todas las versiones de Excel son los siguientes:
A1: a B1: 1A2: b B2: 2A3: c B3: 5A4: d B4: 7A5: e B5: 10
Método adicional para utilizar un bucle para eliminar celdas
Este es un método alternativo al método que se muestra arriba. Este método produce los mismos resultados.