VBA para cada ejemplo (referencia rápida)

Este tutorial le mostrará ejemplos del uso de For Each Loop en VBA. Haga clic aquí para obtener más información sobre los bucles en general.

Para cada bucle

For Each Loop le permite recorrer cada objeto en una colección:

  • Todas las celdas de un rango
  • Todas las hojas de trabajo en un libro
  • Todos los libros abiertos
  • Todas las formas en una hoja de trabajo
  • Todos los elementos de una matriz
  • ¡y más!

Para cada uno: ejemplos básicos

Estos ejemplos demostrarán cómo configurar los bucles For Each para recorrer diferentes tipos de objetos.

Bucle a través de celdas

Este procedimiento recorrerá cada celda en el rango A1: A10, estableciendo la celda a su derecha igual a sí misma.

12345678 Sub ForEachCell ()Atenuar celda como rangoPara cada celda en hojas ("Hoja1"). Rango ("A1: A10")Cell.Offset (0, 1) .value = Cell.valueSiguiente celdaEnd Sub

Bucle a través de hojas

Este procedimiento recorrerá cada hoja en un libro de trabajo, mostrando cada hoja.

12345678 Sub ForEachSheets ()Dim ws como hoja de trabajoPara cada ws en hojasws.Visible = VerdaderoHoja siguienteEnd Sub

Recorrer libros de trabajo

Este procedimiento recorrerá cada libro de trabajo y cerrará cada uno.

12345678 Sub ForEachWorkbooks ()Dim wb como libro de trabajoPara cada wb en libros de trabajowb.CerrarSiguiente wbEnd Sub

Bucle a través de formas

Este procedimiento recorrerá cada forma en Sheet1, eliminando cada una.

12345678 Sub ForEachShape ()Dim Shp como formaPara cada Shp In Sheets ("Sheet1"). FormasShp.DeleteSiguiente ShpEnd Sub

Bucle a través de gráficos

Este procedimiento recorrerá cada gráfico en Sheet1, eliminando cada uno.

12345678 Sub ForEachCharts ()Dim cht como ChartObjectPara cada cht In Sheets ("Sheet1"). ChartObjectscht.DeleteSiguiente chtEnd Sub

Bucle a través de tablas dinámicas

Este procedimiento recorrerá cada tabla dinámica en Sheet1, borrando cada una

12345678 Sub ForEachPivotTables ()Dim pvt como tabla dinámicaPara cada pvt en hojas ("Hoja1"). Tablas dinámicaspvt.ClearTableSiguiente pvtEnd Sub

Bucle a través de tablas

Este procedimiento recorrerá cada tabla en Sheet1, eliminando cada una.

12345678 Sub ForEachTables ()Dim tbl como ListObjectPara cada tbl en hojas ("Hoja1"). ListObjectstbl.DeleteSiguiente tblEnd Sub

Bucle a través de elementos en la matriz

Este procedimiento recorrerá cada elemento de una matriz, mostrará cada valor en un cuadro de mensaje,

12345678910 Sub ForEachItemInArray ()Dim arrValue como varianteAtenuar elemento como variantearrValue = Array ("Elemento 1", "Elemento 2", "Elemento 3")Para cada artículo en arrValueElemento de MsgBoxProximo articuloEnd Sub

Bucle a través de números

Este procedimiento recorrerá cada número en una matriz, mostrará cada valor en un cuadro de mensaje,

12345678910111213 Sub ForEachNumberInNumbers ()Dim arrNumber (1 a 3) como enteroDim num como variantearrNumber (1) = 10arrNumber (2) = 20arrNumber (3) = 30Para cada num en arrNumberMsgbox NumSiguiente numEnd Sub

Para cada generador de bucles

Los ejemplos de este artículo se crearon con la Constructor de bucles en nuestro Complemento de VBA: AutoMacro.

los Constructor de bucles hace que sea muy fácil generar código para recorrer objetos. AutoMacro también contiene muchas otras Generadores de código, una extensa Biblioteca de códigoy poderoso Herramientas de codificación.

Para cada uno - Si

También puede utilizar las sentencias If dentro de los bucles para probar si los objetos cumplen con ciertos criterios, solo realizando acciones en aquellos objetos que cumplen con los criterios. A continuación, se muestra un ejemplo de cómo recorrer cada celda de un rango:

Para cada celda en el rango: si

1234567891011121314 Sub If_Loop ()Atenuar celda como rangoPara cada celda del rango ("A2: A6")Si Cell.Value> 0 entoncesCell.Offset (0, 1) .Value = "Positivo"Else Si Cell.Value <0 EntoncesCell.Offset (0, 1) .Value = "Negative"DemásCell.Offset (0, 1) .Value = "Cero"Terminara siSiguiente celdaEnd Sub

Para cada uno de los ejemplos comunes

Cerrar todos los libros de trabajo

Este procedimiento cerrará todos los libros abiertos y guardará los cambios.

123456789 Sub CloseAllWorkbooks ()Dim wb como libro de trabajoPara cada wb en libros de trabajowb.Close SaveChanges: = TrueSiguiente wbEnd Sub

Ocultar todas las hojas

Este procedimiento ocultará todas las hojas de trabajo.

12345678 Sub HideAllSheets ()Dim ws como hoja de trabajoPara cada ws en hojasws.Visible = xlSheetHiddenSiguiente wsEnd Sub

Mostrar todas las hojas

Este procedimiento mostrará todas las hojas de trabajo.

12345678 Sub UnhideAllSheets ()Dim ws como hoja de trabajoPara cada ws en hojasws.Visible = xlSheetVisibleSiguiente wsEnd Sub

Proteger todas las hojas

Este procedimiento protegerá todas las hojas de trabajo.

12345678 Sub ProtectAllSheets ()Dim ws como hoja de trabajoPara cada ws en hojasws.Protect Contraseña: = "…"Siguiente wsEnd Sub

Desproteger todas las hojas

Este procedimiento desprotegerá todas las hojas de trabajo.

12345678 Sub UnprotectAllSheets ()Dim ws como hoja de trabajoPara cada ws en hojasws.Unprotect Password: = "…"Siguiente wsEnd Sub

Eliminar todas las formas en todas las hojas de trabajo

Este procedimiento eliminará todas las formas de un libro.

123456789101112 Sub DeleteAllShapesOnAllWorksheets ()Atenuar hoja como hoja de trabajoDim Shp como formaPara cada ws en hojasPara cada envío en ws.Shp.DeleteSiguiente ShpSiguiente wsEnd Sub

Actualizar todas las tablas dinámicas

Este procedimiento actualizará todas las tablas dinámicas en una hoja.

12345678 Sub RefreshAllPivotTables ()Atenuar pvt como tabla dinámicaPara cada pvt en hojas ("Hoja1"). Tablas dinámicaspvt.RefreshTableSiguiente pvtEnd Sub

Usando For Each en Access VBA

El bucle For Each funciona de la misma manera en Access VBA que en Excel VBA. El siguiente ejemplo eliminará todas las tablas de la base de datos actual.

123456789 Sub RemoveAllTables ()Dim tdf como TableDefDim dbs como base de datosEstablecer dbs = CurrentDbPara cada tdf en dbs.TableDefsDoCmd.DeleteObject tdf.NameCírculoEstablecer dbs = NadaEnd Sub

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave