MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Listbox em ordem decrescente

    Compartilhe

    vailson
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 129
    Registrado : 08/05/2015

    [Resolvido]Listbox em ordem decrescente

    Mensagem  vailson em Ter 27 Jun 2017, 17:15

    Olá amigos,
    preciso colocar essa listbox em ordem decrescente (ou reverter a ordem), como faço?
    Código:
    Private Sub Form_Open(Cancel As Integer)
    'Autor JPaulo
    Me.Recalc
    Dim strArquivo As String
    Dim strCaminho As String
    Me!lista0.RowSource = ""
    strCaminho = CurrentProject.Path & "\relatorios\"
    strArquivo = Dir$(strCaminho & "*.pdf")
    Do While Len(strArquivo) > 0
    Me.lista0.AddItem strArquivo
    strArquivo = Dir$()
    Loop

    End Sub

    Essa listbox aí lista arquivos em uma pasta no computador.
    Obrigado!
    avatar
    thiagomcosta
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 231
    Registrado : 23/01/2017

    Re: [Resolvido]Listbox em ordem decrescente

    Mensagem  thiagomcosta em Ter 27 Jun 2017, 18:01

    Tenta o seguinte
    Código:
    Private Sub Form_Open(Cancel As Integer)
    'Autor JPaulo
    Me.Recalc
    Dim strArquivo As String
    Dim strCaminho As String
    Dim vTemp As String
    Dim vArquivos()
    Me!lista0.RowSource = ""
    strCaminho = CurrentProject.Path & "\relatorios\"
    strArquivo = Dir$(strCaminho & "*.pdf")
    'Grava os nomes dos arquivos numa array
    Do While Len(strArquivo) > 0
        ReDim Preserve vArquivos(UBound(vArquivos) + 1)
        vArquivos(UBound(vArquivos)) = strArquivo
        strArquivo = Dir$()
    Loop
    'Classifica a array
    For i = 1 To UBound(vArquivos)
        If vArquivos(i) < vArquivo(i - 1) Then
            vTemp = vArquivos(i - 1)
            vArquivos(i - 1) = vArquivos(i)
            vArquivos(i) = vTemp
            i = 1
        End If
    Next i
    'Mostra os arquivos na caixa de listagem
    For i = 0 To UBound(vArquivos)
        Me.lista0.AddItem vArquivos(i)
    Next i
    End Sub

    vailson
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 129
    Registrado : 08/05/2015

    Re: [Resolvido]Listbox em ordem decrescente

    Mensagem  vailson em Dom 09 Jul 2017, 13:09

    Bom dia,
    a variável i não foi definida.
    Ela entra como aí?
    Obrigado!
    avatar
    thiagomcosta
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 231
    Registrado : 23/01/2017

    Re: [Resolvido]Listbox em ordem decrescente

    Mensagem  thiagomcosta em Seg 10 Jul 2017, 12:49

    Ops!

    Inlcui no começo:

    Código:
    Dim i as integer

    vailson
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 129
    Registrado : 08/05/2015

    Re: [Resolvido]Listbox em ordem decrescente

    Mensagem  vailson em Ter 11 Jul 2017, 17:41

    Código:
    ReDim Preserve vArquivos(UBound(vArquivos) + 1)
    Erro em tempo de execução 9
    Subscrito fora do intervalo

    vailson
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 129
    Registrado : 08/05/2015

    Re: [Resolvido]Listbox em ordem decrescente

    Mensagem  vailson em Ter 18 Jul 2017, 14:42

    alguém?
    avatar
    thiagomcosta
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 231
    Registrado : 23/01/2017

    Re: [Resolvido]Listbox em ordem decrescente

    Mensagem  thiagomcosta em Ter 18 Jul 2017, 16:08

    Opa!
    Não tinha visto que estava dando erro.

    Consegui resolver com uma gambiarra, considerando que sempre terá ao menos um arquivo na pasta.

    Código:
    Private Sub Form_Open(Cancel As Integer)
    'Autor JPaulo
    Me.Recalc
    Dim strArquivo As String
    Dim strCaminho As String
    Dim vTemp As String
    Dim vArquivos()
    dim i as integer

    Me!lista0.RowSource = ""
    strCaminho = CurrentProject.Path & "\relatorios\"
    strArquivo = Dir$(strCaminho & "*.pdf")

    'Grava os nomes dos arquivos numa array
    vArquivos() = Array(strArquivo)
    strArquivo = Dir$()
    Do While Len(strArquivo) > 0
        ReDim Preserve vArquivos(UBound(vArquivos) + 1)
        vArquivos(UBound(vArquivos)) = strArquivo
        strArquivo = Dir$()
    Loop

    'Classifica a array
    For i = 1 To UBound(vArquivos)
        If vArquivos(i) < vArquivo(i - 1) Then
            vTemp = vArquivos(i - 1)
            vArquivos(i - 1) = vArquivos(i)
            vArquivos(i) = vTemp
            i = 1
        End If
    Next i
    'Mostra os arquivos na caixa de listagem
    For i = 0 To UBound(vArquivos)
        Me.lista0.AddItem vArquivos(i)
    Next i
    End Sub

    vailson
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 129
    Registrado : 08/05/2015

    Re: [Resolvido]Listbox em ordem decrescente

    Mensagem  vailson em Qua 19 Jul 2017, 14:12

    Bem, a ordem dos arquivos não foi exibida da forma correta, ainda está crescente, está de A a Z. Preciso que seja de Z a A, ordem decrescente. Onde deve alterar?
    Obrigado
    avatar
    thiagomcosta
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 231
    Registrado : 23/01/2017

    Re: [Resolvido]Listbox em ordem decrescente

    Mensagem  thiagomcosta em Qua 19 Jul 2017, 14:42

    Muda esta linha

    Código:
    If vArquivos(i) < vArquivo(i - 1) Then

    Para

    Código:
    If vArquivos(i) > vArquivo(i - 1) Then

    vailson
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 129
    Registrado : 08/05/2015

    Re: [Resolvido]Listbox em ordem decrescente

    Mensagem  vailson em Qua 19 Jul 2017, 14:56

    Certo. O problema agora é que último arquivo aparece em primeiro, e, só após ele, a classificação é feita.
    Ex.: Z A B C D E...
    avatar
    thiagomcosta
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 231
    Registrado : 23/01/2017

    Re: [Resolvido]Listbox em ordem decrescente

    Mensagem  thiagomcosta em Qua 19 Jul 2017, 15:33

    Isso que dá a gente responder rapido sem pensar, hehe....

    Troca esta linha
    Código:
    i = 1

    Por esta
    Código:
    i = 0

    vailson
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 129
    Registrado : 08/05/2015

    Re: [Resolvido]Listbox em ordem decrescente

    Mensagem  vailson em Qua 19 Jul 2017, 16:07

    Código:
    Private Sub Form_Open(Cancel As Integer)
    'Autor JPaulo
    Me.Recalc
    Dim strArquivo As String
    Dim strCaminho As String
    Dim vTemp As String
    Dim vArquivos()
    Dim i As Integer

    Me!lista0.RowSource = ""
    strCaminho = CurrentProject.Path & "\relatorios\"
    strArquivo = Dir$(strCaminho & "*.pdf")

    'Grava os nomes dos arquivos numa array
    vArquivos() = Array(strArquivo)
    strArquivo = Dir$()
    Do While Len(strArquivo) > 0
        ReDim Preserve vArquivos(UBound(vArquivos) + 1)
        vArquivos(UBound(vArquivos)) = strArquivo
        strArquivo = Dir$()
    Loop

    'Classifica a array
    For i = 1 To UBound(vArquivos)
        If vArquivos(i) > vArquivos(i - 1) Then
            vTemp = vArquivos(i - 1)
            vArquivos(i - 1) = vArquivos(i)
            vArquivos(i) = vTemp
            i = 0
        End If
    Next i
    'Mostra os arquivos na caixa de listagem
    For i = 0 To UBound(vArquivos)
        Me.lista0.AddItem vArquivos(i)
    Next i
    End Sub

    Valeu amigo. Agora sim.
    Obrigado!

      Data/hora atual: Ter 21 Nov 2017, 19:12