Guía o ejemplo para trabajar con arreglos

Queria consultar sobre algún link, pdf o ejemplo sencillo de como trabajar con arreglos o arrays, lamentablemente nunca los he usado antes y no me ha quedado claro la manipulación de estos, lo que necesito es ir llenando el arreglo con datos, con un For para ser más específico para luego poder aplicarle un filtro con el VBA y ya que el código pide un arreglo para la ejecución del filtro pero la idea de mi programa es que detecte ciertos ID con un comando Left(palabra, selección) y que ese ID completo se guarde en el arreglo.

3

3 respuestas

Respuesta
1

Esta web está dirigida a Visual Basic 6.0 pero es totalmente "adaptable" para VBA. Están las cosas explicadas de un modo nada difícil, espero te ayude:

http://www.recursosvisualbasic.com.ar/htm/tutoriales/tutorial-basico6.htm 

Salu2

Abraham Valencia

Respuesta
1

Por lo que comentas.

Suponiendo que en la "Hoja4", columna A tienes tus ID que quieres meter en el arreglo, PERO, solamente quieres meter en el arreglo los ID que empiezan con las letras "AM"

Según la imagen en el arreglo, solamente cargaríamos los ID: AM 1, AM 2 y AM 3

Como no sabes cuántos ID se van a meter en el arreglo, entonces hay que trabajar con un arreglo dinámico

Ejemplo:

Sub Macro22()
'
' ejemplo arreglo
'
    Dim datos() As String       'declaras el arreglo
    Set h4 = Sheets("Hoja4")
    n = -1
    For i = 2 To h4.Range("A" & Rows.Count).End(xlUp).Row
        If Left(h4.Cells(i, "A"), 2) = "AM" Then
            'se redimensiona el arreglo por cada coincidencia
            n = n + 1
            ReDim Preserve datos(n)
            'se cargan en el arreglo los ID que empiezan con AM
            datos(n) = h4.Cells(i, "A")
        End If
    Next
    '
    If n > -1 Then
        'filtramos la hoja3 en la columna A con los datos del arreglo
        Sheets("Hoja3").Range("$A$1:$B$14").AutoFilter Field:=1, _
            Criteria1:=Array(datos), _
            Operator:=xlFilterValues
    End If
End Sub

En la hoja3 antes del filtro:

En la hoja3 después de ejecutar la macro:


Avísame cualquier duda. No olvides valorar la respuesta.

.

Me has ayudado bastante con esta respuesta, muchisimas gracias.

Hola denuevo, te quería consultar que si por ejemplo parte de esos ID's se repiten pero yo lo quiero poner solo una vez, podría hacer un IF en el For del arreglo dinámico de esta forma:

' Ubicado dentro del For que registra la info. dentro del arreglo, donde código es uno de los ID's que ' necesito incluir en la filtración pero se repite innumerablemente y código ya esta dentro del arreglo ' o entra por primera vez al código

codigo = 110120
If codigo not in arreglo(n) then 
- - - - meto el dígito dentro del arreglo luego de ya haberlo segregado con un Left(codigo,4) = 1101 - - - - 

Saludos y muchas gracias....

Lo más práctico es que en lo hoja copias a otra columna solamente los valores únicos, después cargas en el arreglo los valores únicos de la nueva columna.

Respuesta
1

Este es un ejemplo simple no necesitas un for para hacerlo

Sub FILTRAR()
Set datos = Range("A1").CurrentRegion
NOMBRES = Array("SARA", "CARLOS", "ROSA")
With datos
    .AutoFilter
    .AutoFilter Field:=1, Criteria1:=NOMBRES, Operator:=xlFilterValues
End With
Set datos = Nothing
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas