Uso de For each … Next en vba Excel

El constructor For each … Next nos permite la manipulación de objetos dentro de una colección. Una colección es el conjunto de elementos de un mismo tipo, por ejemplo, colección de celdas, de hojas, de libros, de ventanas, objetos gráficos, etc.

A diferencia del constructor For … Next, que nos permite elegir el inicio y fin de una numeración, la cual se puede asignar para varios motivos, For  each … Next incluye todos los objetos de las colecciones de Office.

Expongo 3 macros sencillas que nos permitirán conocer el uso del constructor, lo demás será cuestión de aplicar los métodos o procedimientos de cada objeto en cuestión.

Colección de celdas

Aplicable en la manipulación de celda contenidas en un rango elegido, por ejemplo: cambiar color, tamaño, insertar comentario, aplicar una función, etc. El siguiente ejemplo nos arroja un objeto MsgBox donde nos dice la ruta de cada celda elegidas, así como su contenido:

Sub CadaCelda()
'Se declara la variable Celda como rango
Dim Celda As Range
For Each Celda In Selection
    MsgBox "La celda " & Celda.Address & " Tiene el contenido " & Celda.Value, vbInformation, "EXCELeINFO"
Next Celda
End Sub

Colección de hojas

Las acciones que se pueden realizar con las hojas, entre otras, son: eliminar, cambiar nombre, color de etiqueta, ocultar, mostrar, mover. El ejemplo muestra mediante un MsgBox él número correspondiente al índice de cada hoja, así como su nombre:

Sub CadaHoja()
'Se declara la variable Hoja como objecto
Dim Hoja As Object
For Each Hoja In ThisWorkbook.Sheets
    MsgBox "La hoja " & Hoja.Index & " Se llama " & Hoja.Name, vbInformation, "EXCELeINFO"
Next Hoja
End Sub

Colección de archivos

También se podrá utilizar la colección Windows, para poder manipular ventanas, valga la redundancia. Con los libros se podrá guardar, cerrar, imprimir, etc. La macro siguiente nos muestra el nombre de cada archivo abierto. Nótese que también nos muesta el nombre de los archivos ocultos:

Sub CadaLibro()
'Se declara la variable Libro como objecto
Dim Libro As Object
For Each Libro In Application.Workbooks
    MsgBox "El libro tiene el nombre " & Libro.Name, vbInformation, "EXCELeINFO"
Next Libro
End Sub

Como nos hemos dado cuenta el constructor tiene una estructura sencilla y digerible, lo demás será cuestión de conocer que más podemos hacer con todos los objetos de Excel, instruirnos y echar a volar nuestra curiosidad.

You may also like...