Mais uma do fórum, dessa vez, da autoria do colega André.
O código abaixo faz a ordenação de um array multidimensional, incrementando um exemplo já colocado aqui no blog que fazia o trabalho, mas somente com em arrays com uma dimensão. Bom, o código e seus comentários falam por si:
'@Sort ArrayMulti '@Data: 04/08/2010 '@Autor: André Tonini ' Esta função ordena um array multidimensional ' Parametros ' @TheArray - Array - Array que será ordenado ' @Column - Integer - Por qual coluna o array será ordenado ' @ColumnCount - Integer - O número de colunas do array Public Function SortArrayMulti(ByRef TheArray As Variant, _ Column, _ ColumnCount) 'Variaveis '---------- Dim temp() Dim x, i, y As Integer Dim sorted As Boolean 'Dimensões do array '------------------ ReDim Preserve temp(1 To UBound(TheArray, Column), 1 To ColumnCount) 'Repetição para ordenar até o final do array '-------------------------------------------- Do While Not sorted 'No inicio ele está ordenado '-------------------------- sorted = True 'Laço que percorre as linhas '---------------------------- For x = linhaCabecalho + 1 To UBound(TheArray, Column) - 1 'Faz a comparação '---------------- If (TheArray(x, Column) > TheArray(x + 1, Column) And TheArray(x + 1, Column) <> Empty) Then 'Ando por todas as colunas '------------------------- For y = 1 To ColumnCount temp(x, y) = TheArray(x + 1, y) Next y 'Ando por todas as colunas '------------------------- For y = 1 To ColumnCount TheArray(x + 1, y) = TheArray(x, y) Next y 'Ando por todas as colunas '------------------------- For y = 1 To ColumnCount TheArray(x, y) = temp(x, y) Next y 'Passou pelo if, então não está ordenado '--------------------------------------- sorted = False End If Next x Loop End Function |
Valeu André!