Avatar billede Morten Nybegynder
02. juli 2003 - 12:11 Der er 1 kommentar og
1 løsning

Sorterer stigende/faldende

Hej

Jeg ønsker mig en funktioner, alá stifinderen:

Når man klikker på en label så sorteres kolonnen stigende, klikker man igen sorteres den faldende...

Selve sorteringen i min listbox har jeg styr på, men vil høre hvordan I ville håndtere det huske om der har været klikket en gang på en label osv.

Min egen løsning, umiddelbart, er at lave et skjult felt hvor der indsættes et 1 tal første gange der klikkes på en label, klikkes der så igen et 2 tal og igen så et 1 tal...
Hvis der så klikkes på en anden label så nulstilles feltet og der indsættes 1....

Lyder det mystisk - er der en nemmere metode?
Avatar billede Morten Nybegynder
02. juli 2003 - 12:18 #1
Sorry...

Dette skal selvfølelig være i VBA kode og det er ikke et Excelark der skal sorteres men en listbox i en userform...

Men som sagt det jeg er ude efter er håndteringen af hvor mange gange der er klikket på en label/knap
Avatar billede Morten Nybegynder
02. juli 2003 - 13:27 #2
Okay jeg kom selv frem til følgende, som slå to fluer med et smæk, da jeg samtidigt med sorteringen får farvet den label som der er sorteret efter.

Jeg har en event når der klikkes på en label:

Private Sub lblKundeNavn_Click()
    Call labels("lblKundeNavn", 4)
End Sub

Labels kaldes med labellens navn samt kolonnenumret i listboxen

Private Function labels(Caller, Col As Long)
Dim c
    For Each c In ufOrdre.Controls
'---først gøres alle andre labels end den der kalder, grå
        If UCase(TypeName(c)) = UCase("Label") And _
        c.Name <> Caller Then
            c.BackColor = RGB(162, 162, 162)
        End If
    Next c
    For Each c In ufOrdre.Controls
'--- Så findes den label som har kaldt funktionen
        If c.Name = Caller Then
'--- og udfra labellens baggrundsfarve bestemmes så om der skal sorteres stigende eller faldende...
            With c
                If .BackColor = RGB(162, 162, 162) Then
                    .BackColor = RGB(0, 200, 0)
                    Call liste(Col, "A")
                ElseIf .BackColor = RGB(0, 200, 0) Then
                    .BackColor = RGB(0, 0, 255)
                    Call liste(Col, "D")
                ElseIf .BackColor = RGB(0, 0, 255) Then
                    .BackColor = RGB(0, 200, 0)
                    Call liste(Col, "A")
                End If
            End With
            Exit Function
        End If
    Next c
End Function

Tips, tricks, hints eller andre kommentar er meget velkomne....
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester