Modo de empleo por cada próximos-bucles con las colecciones en vba excel 2016

VBA soporta otro tipo de bucle en Excel 2016: bucle a través de cada objeto en una colección de objetos. Una colección, como usted sabe, consiste en una serie de objetos del mismo tipo. Por ejemplo, Excel tiene una colección de todos los libros abiertos (la colección de libros de trabajo), y cada libro tiene una colección de hojas de trabajo (la colección Hojas de trabajo).

Cuando tenga que recorrer cada objeto en una colección, utilice el siguiente para cada estructura. En el siguiente ejemplo se recorre cada hoja de cálculo del libro activo y elimina la hoja de trabajo si está vacío:

DeleteEmptySheets Sub () Dim WkSht Como WorksheetApplication.DisplayAlerts = FalseFor Cada WkSht En ActiveWorkbook.WorksheetsIf WorksheetFunction.CountA (WkSht.Cells) = 0 ThenWkSht.DeleteEnd IfNext WkShtApplication.DisplayAlerts = TrueEnd Sub

En este ejemplo, la variable WkSht es una variable de objeto que representa cada hoja del libro. No hay nada especial sobre el nombre de la variable WkSht- se puede usar cualquier nombre de variable que te gusta.

Video: Colección Playful by RIZOS (2014-2015)

El código de bucle a través de cada hoja de cálculo y determina una hoja vacía contando las células no están en blanco. Si lo que cuenta es cero, la hoja está vacía, y se elimina. Observe que la configuración DisplayAlerts se apaga mientras que el bucle está haciendo su cosa. Sin esa declaración, Excel aparece un aviso cada vez que una hoja está a punto de ser eliminado.

Si todas las hojas del libro están vacías, se produce un error cuando Excel intenta eliminar la única hoja. Normalmente, podría escribir código para manejar esa situación.

Video: The Internet's Own Boy: The Story of Aaron Swartz (CC available)

Aquí hay otro para uno a-siguiente ejemplo. Este procedimiento utiliza un bucle para ocultar todas las hojas del libro activo excepto la hoja activa.

HideSheets sub () Dim Sht Como WorksheetFor Cada Sht En ActiveWorkbook.WorksheetsIf Sht.Name lt; gt; ActiveSheet.Name ThenSht.Visible = xlSheetHiddenEnd IfNext ShtEnd Sub

El procedimiento HideSheets comprueba el nombre de la hoja. Si no es el mismo que el nombre de la hoja activa, la hoja está oculto. Observe que la propiedad visible no es booleano. Esta propiedad puede tomar realmente en cualquiera de Tres valores y Excel proporciona tres constantes incorporadas. Si eres curioso acerca de la tercera posibilidad (xlVeryHidden), comprobar el sistema de ayuda.

Video: Computational Thinking - Computer Science for Business Leaders 2016

Lo que se oculta eventualmente debe conseguir no escondido, así que aquí tiene una macro que unhides todas las hojas del libro activo:

UnhideSheets Sub () Dim Sht Como WorksheetFor Cada Sht En ActiveWorkbook.WorksheetsSht.Visible = xlSheetVisibleNext ShtEnd Sub

Como era de esperar, puede crear bucles for anidados Cada-NEXT. El procedimiento CountBold bucle a través de cada célula en el rango utilizado en cada hoja de cálculo en cada libro abierto y muestra un recuento del número de células que están formateados como negrita:

Sub CountBold () Dim WBook Como WorkbookDim WSheet Como WorksheetDim célula como RangeDim Cnt Como Longfor Cada WBook En WorkbooksFor Cada WSheet En WBook.WorksheetsFor cada celda en WSheet.UsedRangeIf Cell.Font.Bold = True Entonces Cnt = Cnt + 1Siguiente CellNext WSheetNext WBookMsgBox Cnt & “Casillas en trazo grueso encontraron” End Sub
Artículos Relacionados