listbox: timesetting in hh:mm:ss

Status
Niet open voor verdere reacties.

ThomasGHI

Gebruiker
Lid geworden
1 feb 2019
Berichten
37
Beste leden,

hoe kan ik in mijn listbox een tijdsnotatie die in mijn sheet correct als tijd weergegeven word, nu krijg ik enkel een decimale weergave in mijn listbox.
Momenteel zit de tijdnotattie in kolom C & D van sheet "log".
Doelstelling is dat ik momenteel een log bijhoud wie in de excel-file inlogt en uitlogt.


Code:
Private Sub UserForm_Initialize() 'Listbox1 vullen
    With Sheets("log")
         sq = Sheets("log").Range("A2:D" & .Cells(Rows.Count, 1).End(xlUp).Row).Value
    End With
    With ListBox1
        .Clear
        .ColumnCount = 4
        .List = sq
    End With
    
  ComboBox1.List = Sheets("Klant").Range("B1").CurrentRegion.Value
End Sub

Private Sub Combobox1_Change()
    If ComboBox1 <> vbNullString Then
        sCrit = "*" & UCase(ComboBox1.Value) & "*"
        With ListBox1
            For iRow = .ListCount - 1 To 0 Step -1
                If Not UCase(.List(iRow, 0)) Like sCrit Then
                    .RemoveItem iRow
                End If
            Next iRow
        End With
    Else
        UserForm_Initialize
    End If
End Sub

Private Sub CommandButton1_Click()  ' UserForm1 sluiten
Unload Me
End Sub
 
Laatst bewerkt:
Plaats een voorbeeld van je document.
 
Mag ik vragen waarom?
Ik heb al ondervonden in mijn vorige forumvragen dat er steeds om voorbeeld gevraagd word zonder dat er ook eens een echt respons komt.
Op basis van de code zou het ook moeten lukken.
 
Ok.
Succes.
 
gokje
Code:
    With Sheets("log")
        sq = Sheets("log").Range("A2:D" & .Cells(Rows.Count, 1).End(xlUp).Row).Value
        For i = 1 To UBound(sq)
            sq(i, 3) = Format(sq(i, 3), "hh:mm:ss")
            sq(i, 4) = Format(sq(i, 4), "hh:mm:ss")
        Next
    End With
 
Code:
Private Sub UserForm_Initialize() 'Listbox1 vullen
    With Sheets("log")
         sq = Sheets("log").Range("A2:D" & .Cells(Rows.Count, 1).End(xlUp).Row).Value
    End With
    With ListBox1
        .ColumnCount = 4
        .List = sq
        For i = 0 To .ListCount - 1
            .List(i, 2) = Format(.List(i, 2), "hh:mm")
            .List(i, 3) = Format(.List(i, 3), "hh:mm")
        Next i
    End With
 
oplossing van gast0660 werkt maar excel moet er heel lang overdoen om het weer te geven, in begin regaeert het niet en na enige tijd krijg ik mijn userform met de gegevens ?
 
lijkt me ook logisch, vooraf aanpassen en dan naar de listbox doorgeven of eerst in de listbox en daarna aanpassen
 
dat is het voordeel als je een voorbeeldfile bijstuurt.
Mogelijks wordt tijdens het veranderen van die listbox nog een derde macro aangeroepen of zoiets.
Loop anders eens met het programma mee, stap per stap en kijk of er plots geen ongewenst zijsprongetje wordt gemaakt.
Gebruik anders onderbrekingspunten na een loop of zo
 
het probleem is als er teveel rijen zijn met gegevens dat hij langzamer is om de gegevens op te roepen.
Ik zou dit willen oplossen door er een voorwaarde aan te binden zoals het zoeken tussen 2 datums, maar hoe?
 
Laatst bewerkt:
Gebruik dan bijvoorbeeld eerst een filter alvorens je listbox te laden
 
Code:
    With Sheets("log")
        sq = .Range("A2:D" & .Cells(Rows.Count, 1).End(xlUp).Row).Value    'uitlezen gegevens
    End With

    With CreateObject("scripting.dictionary")                        'dictionary aanmaken
        For i = 1 To UBound(sq)                                      'gegevens aflopen
            If Application.Median(0.5, 0.7, sq(i, 3)) = sq(i, 3) Then    'check of 3e kolom ergens in een bepaald bereik zit, door jou aan te passen !
                a = Application.Index(sq, i, 0)                      'bepaalde rij kopieren naar array
                For j = 2 To UBound(a)                               'laatste 2 kolommen
                    a(j) = Format(a(j), "hh:mm:ss")
                Next
                .Add .Count, a                                       'in dictionary stoppen
            End If
        Next

        If .Count Then                                               'er zijn gegevens in de dictionary
            sq1 = Application.Index(.items, 0, 0)                    'items uitlezen
        Else
            MsgBox "geen gegevens voldoen aan voorwaarden"
        End If
    End With

    With ListBox1
        .ColumnCount = 4
        .List = sq1                                                  'je gefilterde gegevens
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan