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

Tijd invoeren versnellen

Status
Niet open voor verdere reacties.

PKingswood

Gebruiker
Lid geworden
18 sep 2004
Berichten
172
Is het mogelijk om tijden in te voeren zonder de dubbele punt daarbij in te hoeven typen?
Omdat ik vaak veel tijden in moet voeren, wil ik dit proces graag versnellen. zodat als ik 1234 typ dat dit wordt weergegeven als 12:34. De celeigenschappen staan ingesteld op tijd (weergavevoorbeeld 13:30).
 
Je kunt het scheidingsteken voor de tijdnotatie in het configuratiescherm > landinstellingen wijzigen in een punt, maar dit gaat met het rekenen met tijd niet altijd goed.

Wel kun je kijken of mijn bijlage wat voor je is.
Je gebruikt twee kolommen:
Eén om de tijd in te voeren (in het voorbeeld kolom A) en één om deze om te zetten naar een tijdnotatie (in het voorbeeld kolom B). In kolom C is ter info de tijd omgerekend naar een decimale waarde, zodat er mee 'gerekend' kan worden.
 

Bijlagen

Dankjewel Valijn,

Die landinstellingen waren nieuw voor mij. Om de dubbele punt te vervangen voor een komme, vind ik erg verwarrend ogen. Daar zie ik dan ook vanaf. Wel ontdekte ik dat ik hier op het tabblad Valuta ook het valutasymbool kan wijziggen. Hier heb ik de gulden-aanduiding vervangen voor het euro-symbool. Nu is dat ook doorgevoerd in Excel.
Voor wat betreft jou bestandje vind ik het jammer dat er een extra kolom bij nodig is. Ook dat maakt het er niet overzichtelijker op.
Is het niet mogelijk dat de viercijferige invoer van de tijd automatisch wordt gesplitst met een dubbele punt?
P.s. Wist je dat je ook met tijden kunt rekenen zonder deze om te zetten naar een decimaal getal? bijvoorbeeld =10:00+1:30 resulteerd in 11:30.

Groetjes Kingswood.
 
Probeer volgende VBA routine eens.

hiermee kun je tijden als geheel getal invoeren bv 745 voor 7u45m en 30 voor 0u30m.
cel opmaak :mm


  • Private Sub Worksheet_Change(ByVal target As Range)
    'invoeren van tijd in gehele getallen

    On Error Resume Next
    If Intersect(target, Range("A1:G100")) 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

de range A1:G100 kun je zelf aanpassen

groeten math
 
Hé Math,

Kun je er mij even bij vertellen hoe ik dit invoer. Welke stapsgewijze handelingen moet ik daarvoor uitvoeren?

Groetjes Kingswood
 
Geweldig Math, ik volgde de thread en met deze oplossing kan ik mijn formulier ook veel gemakkelijker invullen!
TNX, GRTZ fun_surfer.
 
Hoi PKingswood,

de handelingen:

druk Alt-F11 dan kom in de VBA editor
in de linker kolom (onder VBAProject) dubbelklik je op het werkblad waarin deze routine moet toegepast worden.
rechts zie je dan het editor veld, plaats hierin de sub routine pas de range aan en klaar is .......

in het werkblad zelf stel de celeigenschappen in.
selecteer de cellen waarop dit van toepassing is - rechter musklik - celeigenschappen - getal - aangepast.
gebruik je alleen tijden kleiner als 24:00 uur dan kun je keizen voor u:mm anders moet je de u omsluiten met brackets :mm


groeten
Math
 
Je kunt de tekst van de VBA-routine hierboven gewoon selecteren, dus het stuk van:

Private sub .....
..... tot
End sub

met Ctrl-C kopiëren
vervolgens ga je naar de editor zoals hierboven omschreven en dan
plakken in de editor met Ctrl-V.

Scheelt een hoop werk ..... écht wel.
 
Dankjewel,
maar het werkt niet goed. Doe ik wat verkeerd?
Als ik binnen het aangegeven cellenbereik een viercijferige tijd aangeef, is het resultaat steeds 0:00.
Als ik op de cel ga staan, zie ik in de formulebalk dat de vier cijfers worden beschouwd als het aantal dagen vanaf 1-1-1900. (ongeacht hoe ik de celeigenschappen in stel)
Hoe los ik dit op?
Als ik het cellenbereik (A1:G100) wil veranderen, hoef ik dit dan enkel en alleen maar op deze plaats aan te passen?

Groetjes Kingswood
 
Ik denk dat je iets verkeerd doet.

als bijlage een bestandje waarin je in de cellen a1..d20 de tijd zonder : kunt invoeren.
Deze range kun je zonder probleem aanpassen denk er dan wel aan ook de cel eigenschappen van de range aan te passen -opmaak in :mm

succes

groet Math
 

Bijlagen

GELUKT!

Dankjewel Math,

Het is gelukt. Dit scheelt mij in het vervolg een hoop tijd. Groetjes van Kingswood.
:thumb:
 
Hoi,

Ik zit met hetzelfde probleem als PKingswood had. Ik kom na het volgen van de aanwijzingen tot hetzelfde probleem.

Als ik binnen het aangegeven cellenbereik een viercijferige tijd aangeef, is het resultaat steeds 0:00.
Als ik op de cel ga staan, zie ik in de formulebalk dat de vier cijfers worden beschouwd als het aantal dagen vanaf 1-1-1900. (ongeacht hoe ik de celeigenschappen in stel)
Hoe los ik dit op?

Ik heb gekeken naar de "tijdinvoer" bijlage. En zie nog niet waar de fout ligt, en hoe ik mijn eigen werkblad kan aanpassen.:confused:

Kan iemand mij hiermee misschien helpen?

Groetjes Sanne
 
Probeer het eens met
Code:
Private Sub Worksheet_Change(ByVal target As Range)
  If Not Intersect(target, Columns(1)) Is Nothing And Not IsEmpty(target) Then
    Application.EnableEvents = False
    Target = Replace(Format(Target / 100, "00.00"), ",", ":")
    Application.EnableEvents = True
  End If
End Sub
Deze macro gaat ervan uit dat je de tijden invoert in kolom A.
 
Bedankt voor je snelle reactie.

De macro werkt prima, zoals je al zei, voor kolom A.
Ik hoop dat ik nu niet heel erg moeilijk ga doen, mijn tijden staan namelijk in de kolommen B & C. Kan ik deze macro zo aanpassen dat het voor die kolommen geldt??

Groeten Sanne
 
Met nog een kleine verbetering:

Code:
Private Sub Worksheet_Change(ByVal target As Range)
  If Not Intersect(target, Columns("B:C")) Is Nothing And Not IsEmpty(target) And target.Cells.Count = 1 Then
    Application.EnableEvents = False
    target = Replace(Format(target / 100, "00.00"), ",", ":")
    Application.EnableEvents = True
  End If
End Sub
 
Super super

Ik ben echt heel blij met je hulp. Alles werkt nu perfect.

Nog even dit, kan ik voor B en C ieder andere kolom op dezelfde manier invullen?
Kan ik het ook uitbreiden met B:C:E.

Groeten Sandra
 
Voor aaneengesloten kolommen:
Code:
Private Sub Worksheet_Change(ByVal target As Range)
  If Not Intersect(target, columns("B:Z")) Is Nothing And Not IsEmpty(target) And target.Cells.Count = 1 Then
    Application.EnableEvents = False
    target = Replace(Format(target / 100, "00.00"), ",", ":")
    Application.EnableEvents = True
  End If
End Sub

Voor niet aaneengesloten kolommen bijv: B,C en E en K

Code:
Private Sub Worksheet_Change(ByVal target As Range)
  If Not Intersect(target, Range("B1:C1,E1,K1").EntireColumn) Is Nothing And Not IsEmpty(target) And target.Cells.Count = 1 Then
    Application.EnableEvents = False
    target = Replace(Format(target / 100, "00.00"), ",", ":")
    Application.EnableEvents = True
  End If
End Sub
 
Nogmaals bedankt voor je hulp. Ik ben er erg meegeholpen.

Groeten Sanne
 
Ik heb even gekeken naar deze vraag en oplossing. Ik zou er nog een kleine toevoeging bij willen vragen.

Hoe krijg ik dit script zo dat de tekens ( . , ; ) ook als tijd worden gemaakt.

Dat als je 4.00 invoert je 4uur te zien krijgt.

Bedankt :thumb:
\Michiel
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan