• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Combobox gevuld uit sheet; tijd correct weergeven

Status
Niet open voor verdere reacties.

Peter B

Gebruiker
Lid geworden
8 feb 2007
Berichten
672
Ik ben in de mogelijkheden van formulieren gedoken. Ik loop nu vast op een "detail" waar ik voor mijn gevoel geen goede oplossing voor kan vinden.

Ik vul de combobox cbWedstrijdtijd met een named range uit een Excelsheet. Deze named range bevat tijden formatted als tijd (dus 09:30, 10:00, 10:30, etc.). De opmaak is Nederlands; de versie van Excel is Engels.

Nu loop ik erg tegenaan dat de weergave in de combobox "verspringt" van bv. 10:00 naar 0.416666666666666. Dit is niet wenselijk, dus format ik de combobox als volgt:
Code:
Private Sub cbWedstrijdtijd_Change()
    cbWedstrijdtijd.Value = Format(CStr(Replace(cbWedstrijdtijd, ".", ",")), "h:mm")
End Sub
Ik denk creatief, maar wat nu als deze sheet wordt gebruikt door iemand die zijn/ haar instellingen anders heeft staan? Dan voorzie ik problemen. Is er een fatsoenlijke manier om dit op te lossen?

Alvast dank voor het meedenken!

Peter
 
Die 0.416666666666666 is de nummerieke weergave van 10:00 uur en is dus goed. Doe deze dus * 24.
 
Laatst bewerkt:
Hi edmoor,

Ik weet niet zeker of ik je goed begrijp. Ik begrijp dat de 0,416etc overeenkomt met 10:00. Ik wil echter dat de 10:00 die wordt opgehaald uit de sheet, en die vertaalt wordt bij selectie in de combobox naar 0,416etc wordt weergegeven als 10:00.

Ik heb hiervoor een oplossing bedacht (zie 1e post) alleen vrees ik dat dat wel eens fout zou kunnen gaan als iemand anders de selectie maakt (andere taal-/landinstellingen), omdat ik nu keihard de "." vervang voor een komma voordat ik het getal terug format naar 10:00.

Vandaar dat ik mij afvraag of er een fatsoenlijke (foolproof) optie bestaat. Het enige wat ik kan vinden is timevalue, maar deze struikelt ook over de ".".

Bedankt voor het meedenken!

Peter
 
Hi edmoor,

De manier waarop wordt omgegaan met datum- en tijd was mij al helder. Ik heb mijn code omgeschreven en nu komt de fout niet meer voor (evenals een bug die te maken heeft met het converteren van 12:00 uur). Ik heb geen verklaring, maar ach ... Het werkt en is (als het goed is) ongevoelig voor verschillende land- en taalinstellingen
Code:
    With cbWedstrijdtijd
        .Value = Format(cbWedstrijdtijd, "h:mm")
'   Uitzondering omdat 12:00 wordt weergegeven als "0:00". Zou ook gelden voor 06:00, maar dat is nvt
        .Value = IIf(.Value = "0:00", "12:00", cbWedstrijdtijd)
    End With

Nogmaals dank voor het meedenken.

Peter
 
Nu haal je het inderdaad ook goed van de cel naar de combobox ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan