Continuando com a resolução dos meus primeiros exercícios em Vba aqui fica mais um:

Elabore um algoritmo que permita ordenar por ordem crescente um conjunto de células seleccionadas.

Aqui fica o código que resolve o exercício:

Sub SortSelection()
    Dim CellsCount As Integer
    Dim x() As Double, aux As Double
    Dim CellsToSort As Range
    Dim xCell As Range
    Dim i As Integer, j As Integer

    Set CellsToSort = Selection    ' Conjunto de células seleccionadas
    CellsCount = CellsToSort.Count

    ReDim x(1 To CellsCount)  ' dimensionar o vector

    i = 1
    For Each xCell In CellsToSort
        x(i) = xCell.Value
        i = i + 1
    Next
    '
    ' ordenação crescente
    '
    For i = 1 To CellsCount
        For j = i To CellsCount
            If x(i) > x(j) Then ' troca
                aux = x(i)
                x(i) = x(j)
                x(j) = aux
            End If
        Next j
    Next i

    i = 1
    For Each xCell In CellsToSort
        xCell.Value = x(i)
        i = i + 1
    Next
End Sub

Não sei se a forma como implementei a resolução do exercício é a mais correcta, e por isso fico à espera de comentários, ou mesmo de correcções e dicas de melhoramento do código que apresento.

Share

Leave a Reply