Instrucción For Each Next en macro




La instrucción For Each ... Next permite realizar un bucle o ejecutar una serie de instrucciones sobre cada uno de los elementos de una colección de datos, esta instrucción se puede anidar; la sintaxis es la siguiente:

Antes de seguir recomiendo que leas un excelente libro sobre Excel el que te ayudará operar las planillas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.


  


For Each elemento In grupo

códificación

Exit For

codificación

Next elemento

Donde:

Elemento: es un dato obligatorio y variable que se utilizar para hacer referencia a cada uno de los elementos de la matriz, debe ser una variable de tipo variant.
Grupo: nombre del conjunto de los elementos.
Codificación: son las instrucciones que se deben ejecutar en cada uno de los elementos del grupo.
Exit For: es opcional, se utiliza para evaluar una expresión If ... Then, permitiendo salir del bucle.

En la siguiente codificación se utiliza para For Each ...Next para cargar datos en un combobox en forma única, es decir no tiene en cuenta los duplicados, primero se recorre el rango para crear una colección con datos únicos de un rango, luego se recorre cada uno de los elementos de la colección para ser finalmente agregados al combobox, obteniendo un combobox con datos duplicados.

Suscribe a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlas, buscar en listbox mientras escribes en textbox, ordenar hojas libro excel por su nombre, conectar Excel con Access y muchos ejemplos más.









Código que se inserta en un userform



Public conta As Integer
Private Sub CommandButton2_Click()
MsgBox ("Se encontraron " & conta & " registros no duplicados, ver el combobox")
End Sub

Private Sub CommandButton3_Click()
Unload Me
End Sub
Private Sub UserForm_Initialize()
Dim sd As New Collection
Dim celda As Range
Dim dato
Dim r As String
Dim uf As Integer
Application.ScreenUpdating = False
On Error Resume Next
conta = 0
ComboBox1.Clear
Sheets("hoja2").Select
Range("A2").Select
uf = Range("A" & Rows.Count).End(xlUp).Row
r = "A2:A" & uf
For Each celda In Range(r)
sd.Add celda.Value, CStr(celda.Value)
Next celda
For Each dato In sd
ComboBox1.AddItem dato
conta = conta + 1
Next dato
Application.ScreenUpdating = True
End Sub



Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends