Olá gente, Tenho uma planilha e estou tentando organizar uma listbox por ordem alfabética. Mas quando tento ele da um Erro no Tempo de Execução 70. Não é possivel definir a propriedade list. Permissão Negada.
Esse é o código do erro:
Dim ini, fim As Integer
Dim i, j As Integer
Dim menor As String
ini = 0
fim = ListBox1.ListCount - 1
For i = ini To fim - 1
For j = i + 1 To fim
If ListBox1.List(j) > ListBox1.List(i) Then
menor = ListBox1.List(j)
ListBox1.List(j) = ListBox1.List(i)
ListBox1.List(i) = menor
End If
Next j
Next i
Desde já agradeço.
A rotina está correta, não é para dar erro.
Como são carregados os itens ? Como estão dispostos ? Quantas colunas ? Qual versao do Excel está utilizando ?
Veja um exemplo em :
ListBox em ordem alfabética
https://sites.google.com/site/aulasdeex ... alfabetica
Adicione um UserForm e um Listbox e cole a rotina acima.
Se persistir o erro o ideal é anexar o seu modelo compactado.
[]s
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Dim UltimaLinha As Long
UltimaLinha = Sheets("ServiçosNF").Cells(Cells.Rows.Count, 1).End(xlUp).Row
If UltimaLinha < 6 Then UltimaLinha = 6
ListBox1.RowSource = "ServiçosNF!A2:H" & UltimaLinha
ListBox1.Font.Size = 10
ListBox1.Font.Name = "Verdana"
Dim ini, fim As Integer
Dim i, j As Integer
Dim menor As String
ini = 0
fim = ListBox1.ListCount - 1 '4 itens(0 - 3)
For i = ini To fim - 1 'Comparar 1 item com outros 3
For j = i + 1 To fim 'Comparar com o próximo
If ListBox1.List(i) > ListBox1.List(j) Then
menor = ListBox1.List(j)
ListBox1.List(j) = ListBox1.List(i)
ListBox1.List(i) = menor
End If
Next j
Next i
Esse é o codigo que carrega os dados
Meu Excel é o 2010
Dentro descrito, não há motivo para erro. Possivelmente seu arquivo/modelo tem alguma outra caracteristica que possa gerar essa situação.
Se puder disponibilize seu arquivo/modelo com seus respectivos foumalrios/rotinas para uma analise mais pontual
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
O formulário da listbox com o erro é o: frmConsultarServiçosNF.
spf, o erro é porque você utiliza a Propriedade Rowsource para preencher o ListBox e uma das limitações é não aceitar Classificação direta no ListBox, quando utilizamos a Propriedade Rowsource para classificar devemos :
Classificar primeiro na Planilha e depois recarregar o Listbox.
Eu sugiro utilizar a Propriedade AddItem, faça um teste com a rotina abaixo e veja se é isto o que pretende :
Troque a Rotina que inicia o form por esta :
Private Sub UserForm_Initialize() Dim i As Long, j As Long, k As Long Dim compareColumn As Long Dim cell As Range Dim Rng As Range 'Armazenaa qde de linhas With ThisWorkbook.Sheets("ServiçosNF") Set Rng = .Range("A2", .Range("A2").End(xlDown)) End With 'Preenche o Listbox For Each cell In Rng.Cells With Me.ListBox1 .ColumnCount = 8 'Define a qde de Colunas no Listbox .AddItem cell.Value .List(.ListCount - 1, 1) = cell.Offset(0, 1).Value 'Coluna 1 .List(.ListCount - 1, 2) = cell.Offset(0, 2).Value 'Coluna 2 .List(.ListCount - 1, 3) = cell.Offset(0, 3).Value 'Coluna 3 .List(.ListCount - 1, 4) = cell.Offset(0, 4).Value 'Coluna 4 .List(.ListCount - 1, 5) = cell.Offset(0, 5).Value 'Coluna 5 .List(.ListCount - 1, 6) = cell.Offset(0, 6).Value 'Coluna 6 .List(.ListCount - 1, 7) = cell.Offset(0, 7).Value 'Coluna 7 End With Next cell 'Classifica os Itens compareColumn = 0 With ListBox1 For i = 1 To .ListCount - 1 For j = 0 To i - 1 If StrComp(.List(i, compareColumn), .List(j, compareColumn), 1) = -1 Then Exit For End If Next j .AddItem .List(i, 0), j For k = 1 To .ColumnCount - 1 .List(j, k) = .List(i + 1, k) Next k .RemoveItem i + 1 Next i End With End Sub
[]s
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Olá Gente,
Meu Nome é Carlos e gostaria de saber se tem como organizar uma listbox por ordem alfabética.
Carlos,
Veja um exemplo que faz isso.
Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)
Atenciosamente
Wagner Morel
Creio ser a mesma duvida postada em viewtopic.php?f=10&t=9638
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Wagner Morel,
Queria saber qual coluna ele usa para organizar. Tem como vc me falar?
Carlos,
Infelizmente, esse código não é meu. Creio que peguei na internet em algum lugar e confesso que não sei nem como ele está fazendo. Tive uma necessidade de fazer uma ordenação como essa e peguei e usei esse. Poderia desenvolver um, na ocasião, mas aí tinha que reinventar a roda e preferi utilizar sem ter que verificar o que ele fazia ou como fazia.
Desse modo, não sei te informar isso.
Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)
Atenciosamente
Wagner Morel
Carlos, como o Reinaldo citou, estes dois Tópicos estãoã relacionados, então juntei os mesmos, procure sempre manter o Foco em um só tópico, assim mantemos o Forum organizado.
Como não disse se a rotina que postei atendeu sua Duvida, não vou setar como Resolvido.
Quanto a questão Por qual Coluna estamos Classificando, na rotina que passei a orientação é pela coluna "1 do Listbox, " que no VBA é entendida como Coluna "0", ou seja se quisermos classificar pela Coluna "2" que aparece no Listbox, devemos alterar a Variavel :
compareColumn = 0
para : compareColumn = 1, que no Listbox corresponde a Coluna 2.
Espero que tenha respondido suas duvidas, se SIM, favor definir o Tópico como Resolvido.
[]s
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel