Análisis del código

Hola dante, Te pido me puedas explicar el funcionamiento de la macro "Modulo1" que me ayudaste en una pregunta pasada.

Gracias espero tu respuesta.

1 Respuesta

Respuesta
1

Normalmente las preguntas las reviso en el tema de excel, para futuras preguntas y pueda localizar la pregunta.

http://www.todoexpertos.com/preguntar?topicId=269 

Aquí el código y los comentarios

'se declaran las variables: valores y filas como coleccion
'una colección es una variable donde puedes agregar varios datos
'imagina una columna de excel
Dim valores As New Collection
Dim filas As New Collection
'
'Inicia la macro que lee los números que se tienen que ordenar
Sub ordenar()
'Por Dante Amor
    '
    'Inicia un ciclo para leer cada número
 'empieza en la fila 3 y termina en la fila 7
    For i = 3 To 7
        'En el siguiente llamado a la función "agregar"
        'le pasa 2 parámetros:
        '1. El valor que se tiene que agregar
 'y 2. El número de fila
        Call agregar(Cells(i, "E"), i)
    Next
    '
    'Se inicia el contador j con 13, ya que los resultados ordenados
    'se pondrán iniciando en la fila 13
    j = 13
    For Each f In filas
        'Te acuerdas que mencioné que filas era una variable con datos
 'pues en este ciclo se leen todos los datos que se almacenaron
 'en la variable filas
        '
        'Para cada dato que existe en la variable filas
 'toma el valor de la columna "A" y lo pone en la columna pero
 'en la fila según el contador j. Lo mismo hacer para poner lo
 'de la columna "E" en la columna "C"
        Cells(j, "B") = Cells(f, "A")
        Cells(j, "C") = Cells(f, "E")
        j = j + 1
    Next
    '
    'Se limpian de memoria las variables
    Set valores = Nothing
    Set filas = Nothing
End Sub
'empieza la función agregar
'Recibe el valor y el número de fila en donde se encuentra el valor
'
Sub agregar(valor, fila)
'por.DAM agrega los item únicos y en orden alfabético
    'Lo que hace la función es comparar el nuevo valor que acaba de llegar
 'con los valores ya almacenados en la variablre valores
    '
    For i = 1 To valores.Count
        'Si el nuevo valor es mayor a alguno de los valores almacenados,
        'entonces lo agrega antes,
        valoralmacenado = valores(i)
        If valores(i) < valor Then
            'por ejemplo si llega el valor 5, y está
            'almacenado el 3, entonces guarda el 5 antes del 3, de esta forma
            'el primer valor almacenado en la variable valores siempre será
            'el más grande
            valores.Add valor, Before:=i
            filas.Add fila, Before:=i
            Exit Sub
        End If
    Next
    'si nuevo valor no es mayor a ninguno de los valores almacenados,
 'significa que es el menor y entonces lo agrega al final
 valores. Add valor 'Es mayor lo agrega al final
 filas. Add fila
End Sub

En el código agregué esta línea valoralmacenado = valores(i), en la función agregar.

Ejecuta la macro con F8 para que veas cómo trabaja la función. Después de que pases por la línea, pon el mouse sobre la variable valoralmacenado para que te muestre el valor y veas cómo se compara y verás si es mayor o menor.

Saludos. Dante Amor

Superior a Excelente, dante.

Te lo agradezco mucho esta muy bien explicado y bien comprendido. Te agradezco también por el tiempo que dedicas a ayudarnos.

Saludos y Gracias !

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas