Notifications
Clear all

Como resolver Erro 70

12 Posts
3 Usuários
0 Reactions
6,075 Visualizações
(@spfccaros)
Posts: 27
Eminent Member
Topic starter
 

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.

 
Postado : 12/11/2013 8:31 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

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

 
Postado : 12/11/2013 10:27 am
(@spfccaros)
Posts: 27
Eminent Member
Topic starter
 

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

 
Postado : 12/11/2013 3:27 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

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

 
Postado : 12/11/2013 7:56 pm
(@spfccaros)
Posts: 27
Eminent Member
Topic starter
 

O formulário da listbox com o erro é o: frmConsultarServiçosNF.

 
Postado : 12/11/2013 8:25 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

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

 
Postado : 12/11/2013 10:14 pm
(@spfccaros)
Posts: 27
Eminent Member
Topic starter
 

Olá Gente,
Meu Nome é Carlos e gostaria de saber se tem como organizar uma listbox por ordem alfabética.

 
Postado : 13/11/2013 6:05 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Carlos,

Veja um exemplo que faz isso.

 
Postado : 13/11/2013 6:32 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Creio ser a mesma duvida postada em viewtopic.php?f=10&t=9638

 
Postado : 13/11/2013 6:39 am
(@spfccaros)
Posts: 27
Eminent Member
Topic starter
 

Wagner Morel,

Queria saber qual coluna ele usa para organizar. Tem como vc me falar?

 
Postado : 13/11/2013 6:42 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

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.

 
Postado : 13/11/2013 7:10 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

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

 
Postado : 13/11/2013 9:15 am