For Each VBA

NeB1

Alguien sabe decirme porque esto funciona:

        filtrados(0) = "EBITDA"
        filtrados(1) = "GON"
        For i = 0 To 1 Step 1
            MsgBox (filtrados(i))
        Next

y esto no?:

        filtrados(0) = "EBITDA"
        filtrados(1) = "GON"
        For Each i In filtrados
            MsgBox (filtrados(i))
        Next

Es lo mismo pero gastando for y for each, y el resultado debería ser el mismo porque en ambos casos recorro el vector, pero en el segundo caso el MsgBox me da error de tipos.

erdanblo

¿Has comprobado el valor de "i" solo a ver si es realmente un int u otra cosa? :P

Y en el caso de ser un número, que no este fuera del array.

maRc
filtrados(0) = "EBITDA"
filtrados(1) = "GON"
For Each i In filtrados
    MsgBox (i)
Next 

Cuando utilizas foreach, no recorres el vector utilizando un índice, sino que a cada iteración le asignas a la variable el siguiente valor/objeto del vector.

bLaKnI

For Each, sirve para recuperar directamente los valores de un contenedor.
Así, si tienes strings como es el caso, For Each (Para Cada), te devuelve las palabras.

Se suelen usar estos bucles si tienes por ejemplo una lista con nombres, y quieres directamente correr la lista sin preocuparte del size, y tener una variable dinámica con el valor per se.

Entonces "i", va teniendo los nombres. ¿Comprendes?

NeB1

muchas gracias jejeje, no lo he comprobado aún pero parece que si que va a ser así, asias!!

(siempre me he liado con los foreach xD)

Usuarios habituales

  • NeB1
  • bLaKnI
  • maRc
  • erdanblo