Antoliv Posted February 17, 2023 at 12:10 PM Report Share #630196 Posted February 17, 2023 at 12:10 PM Na sequência do meu tópico Ordenar uma coluna numa listbox encontrei na net a seguinte função: ' 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, linhaCabecalho 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 que a chamo com o seguinte Sub: ' Esta Sub Limpa e Preenche a ListBox ProdEfeitos Ordenada ' -------------------------------------------------------------- Private Sub LblBD_DblClick(ByVal Cancel As MSForms.ReturnBoolean) ' Limpa a ListBox ProdEfeitos ' --------------------------- ListBoxProdEfeitos.Clear ' Passa a Tabela ArrayVarlistBoxProdEfeitos para ser Ordenada pela coluna 1 ' com 10 colunas pela função SortArrayMulti ' ------------------------------------------------------------------------- ListBoxProdEfeitos.List() = SortArrayMulti(ArrayVarListBoxProdEfeitos, 1, 10) End Sub A qual dá-me o seguinte erro : Run time error "381" Could not set the list property Invalid property array index que eu penso que tenha a ver com o TheArray da Função que começa no Index 1 e o ArrayVarListBoxProdEfeitos que começa no Index 0 Como faço para conseguir que o código funcione? Ou seja eu quero chamar a função que me ordena a Listbox clickando na label. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now