• 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.

Invoer tijd in hele getallen.

Status
Niet open voor verdere reacties.

JANHooyman

Gebruiker
Lid geworden
8 okt 2021
Berichten
49
Hallo Experts,

Ik hoop dat jullie een oplossing hebben voor mijn probleem de invoer van tijd.
Waar gaat het om.
Om het invoeren van tijd makkelijk te maken heb ik een vba code gemaakt zodat je geen dubbele punt hoeft te typen oid, bij invoer van bv 700 wordt de tijd automatisch omgezet naar 7:00.
Dit werkt perfect, maar helaas zijn er personen die toch weer met punten gaan typen, of vanuit een ander bestand een verkeerde waarde plakken in de cel.

Een verkeerde waarde in een cel is te ondervangen door gegevensvalidatie door hier een tijdvoorwaarde aan te koppelen (tussen 00:00-23:59)
Maar dan werkt de vba code niet meer (hele getal invoer)

Dus..
In een cel moet de tijd komen dmv typen of plakken (vanuit ander bestand) een foute invoer bv 7.00 moet tot een foutmelding resulteren.

Heeft iemand hier een oplossing voor.
 

Bijlagen

Waarom een foutmelding laten zien? Dit regeltje bovenaan zetten:
Code:
    Target = Replace(Target, ":", "")
 
Waarom een foutmelding laten zien? Dit regeltje bovenaan zetten:
Code:
    Target = Replace(Target, ":", "")


Hallo AccessGuru

Waarom een foutmelding, om de personen erop te wijzen dat ze keer op keer dezelfde fout maken. sommige zijn hardleers helaas :D
En een foutmelding is geen vereiste maar een luxe bijkomstigheid, de oplossing is het allerbelangrijkste.
Ik heb jou regel erbij gezet (zie onderstaande)
Private Sub Worksheet_Change(ByVal target As Range)
'invoeren van tijd in gehele getallen

target = Replace(target, ":", "")
On Error Resume Next
If Intersect(target, Range("A1:C30")) Is Nothing Then GoTo Einde
If IsEmpty(target) Then GoTo Einde

If Hour(target.Value) <> 0 Or Minute(target.Value) <> 0 Then GoTo Einde
Application.EnableEvents = False
If Int(target.Value / 100) < 0.1 Then
target = "00:" & target.Value
Else
target = Int(target.Value / 100) & ":" & Right(target.Value, 2)
End If
Application.EnableEvents = True

Einde:
ActiveSheet.Calculate
End Sub

Helaas wordt excel na invoer in een cel afgesloten ivm met een fout ???
Ik werk met Office 365
 
Laatst bewerkt:
Complete berichten quoten, zeker als ze maar één regel zijn, is uiteraard een zinloze activiteit. Ik ga jouw berichtje dus niet quoten :). Ik heb de code in Excel 365 getest (wél onder de On Error regel gezet, en niet erboven) en bij mij doet-ie het zonder problemen. Overigens vind ik automatiseerders die proberen om gebruikers te dwingen om tijden niet​ als een tijd in te voeren hardleers, niet andersom :).
 
AccesGuru,

Bedankt voor je reactie, ondanks dat ik de regel verplaatst hebt zoals jij beschrijft wordt bij mij excel nog steeds afgesloten ivm een fout (onbekend wat)
Ik speur nog verder...

Wat je opmerking betreft over de verplichte tijd invoer.
elke donderdag voor 8:00 moet ik 10 a 15 excel bestanden met bestellijsten verzamelen. dit zijn gemiddeld 200-600 regels.
Als klanten niet de juiste tijd invullen gaat het bij de verwerking geheel mis, dan moet ik dit steeds zelf aanpassen.
8:30 Moet de verzamelde bestellijst compleet zijn, om dit intern te bespreken. Als klanten om 8:15 nog met een aangepaste bestellijst komen met onjuiste tijd vermeldingen dan geeft dit stress en kans op fouten.
Vandaar dat het belangrijk is dat op de juiste wijze het tijdstip wordt ingevoerd.

met vriendelijke groet,
Jan
 
Jan, maak of zoek op internet een een function (udf) die alle onzin die op tijd lijkt omzet in echte tijden. (ook als het al echte tijden zijn)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan