Notifications
Clear all

Implementar VBA Alterar Ordem de Valores Listbox

3 Posts
2 Usuários
0 Reactions
965 Visualizações
(@trindade)
Posts: 0
New Member
Topic starter
 

Boa tarde, Srs.

Encontrei um código na internet que realizar a alteração do registro em Listbox, faz a função de Up e Down do registro selecionado.
A minha dúvida é a seguinte, como faço para inserir mensagem de alerta.

Exemplo
- Seleciono o segundo registro e vou no botão Up (no arquivo anexo seta para cima) clico uma vez que registro vai para o primeiro registro se eu clicar novamente não irá subir por que já se encontra na primeira posição, a mensagem entraria nesse momento quando o registro assumir primeira posição e clicar novamente na opção de subir ele retornasse a mensagem "Não é possível ordenar registro para cima" e vice versa para baixo.

Muda Registro para Cima

Private Sub MoveUp()

Dim ray
Dim Num
Dim ac As Integer
Dim n As Integer
Dim Temp As String

ray = ListBox2.List

    If Me.ListBox2.ListCount > 0 Then

        For n = 0 To ListBox2.ListCount - 1
            If ListBox2.Selected(n) Then Num = n: Exit For
        Next n
        
        For n = 0 To UBound(ray)
            If Num > 0 Then
                If n = Num Then
                    For ac = 0 To ListBox2.ColumnCount - 1
                        Temp = ray(n, ac)
                        ray(n, ac) = ray(n - 1, ac)
                        ray(n - 1, ac) = Temp
                    Next ac
                End If
             End If
        Next n
    
        ListBox2.List = ray
    
    Else
        MsgBox "Sem registro para organizar", vbInformation, "Sem estação"
    End If

End Sub

Muda Registro para Baixo

Private Sub MoveDown()

Dim ray
Dim Num
Dim ac As Integer
Dim n As Integer
Dim Temp As String

ray = ListBox2.List

    If Me.ListBox2.ListCount > 0 Then

        For n = 0 To ListBox2.ListCount - 1
            If ListBox2.Selected(n) Then Num = n: Exit For
        Next n
        
        For n = 0 To UBound(ray)
            If Not Num >= UBound(ray, 1) Then
                If n = Num Then
                    For ac = 0 To ListBox2.ColumnCount - 1
                        Temp = ray(n, ac)
                        ray(n, ac) = ray(n + 1, ac)
                        ray(n + 1, ac) = Temp
                    Next ac
                End If
             End If
        Next n
    
        ListBox2.List = ray
    
    Else
        MsgBox "Sem registro para organizar", vbInformation, "Sem estação"
    End If

End Sub

Gostaria de uma ajuda dos senhores.

 
Postado : 29/03/2016 11:57 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde Trindade, blz cara?

Logo abaixo do "ray = ListBox2.List" insira isso no MoveUp:

If Me.ListBox2.ListIndex = 0 Then MsgBox "Não é possível ordenar registro para cima"

Logo abaixo de "ray = ListBox2.List" insira isso no MoveDown:

If Me.ListBox2.ListIndex = Me.ListBox2.ListCount - 1 Then MsgBox "Não é possível ordenar registro para baixo"

Qualquer coisa da o grito.
Abraço

 
Postado : 29/03/2016 1:03 pm
(@trindade)
Posts: 0
New Member
Topic starter
 

Boa noite, Bernardo ... Tudo tranquilo !!
Cara sou seu fã, o código de gerar chave esta acabando com alegria de uns usuários ... :D , ficou muito bom, bom mesmo.

Mais uma vez obrigado pela ajuda, só acrescentei um Exit Sub no código,deixando assim:

MoveUp

    If Me.ListBox2.ListIndex = 0 Then
        MsgBox "Não é possivel alterar registro para cima", vbInformation
        Exit Sub
    End If

MoveDown

    If Me.ListBox2.ListIndex = Me.ListBox2.ListCount - 1 Then
        MsgBox "Não é possivel alterar registro para baixo", vbInformation
        Exit Sub
    End If
 
Postado : 29/03/2016 5:37 pm