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

2 vragen met tijd

Status
Niet open voor verdere reacties.

vandervorst

Gebruiker
Lid geworden
24 mrt 2010
Berichten
19
Beste helpers

Ik had eigenlijk nog 2 vraagjes ivm bijgevoegd bestandje.

1)Is er een mogelijkheid om in de kolommen in en uit een gewoon getal in te tikken dat automatisch in tijd wordt gezet: bv.0830 wordt 08:30

2)Is het mogelijk om achter de titel restwaarde rechtstreeks een negatieve tijd in te voeren?
bv een negatief saldo van vorige maand

Dit had ik zeer graag nog gefixt zien te krijgen

Bedankt bij voorbaat

Johan
 

Bijlagen

vandervorst,

Deze code maakt van 1315 13:15
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If IsDate(Target) = False And Target <> "" Then
    Select Case Len(Target)
    Case 4
      Target = Left(Target, 2) & Application.International(xlTimeSeparator) & Right(Target, 2)
    Case 5
      Target = Replace(Target, Mid(Target, 3, 1), Application.International(xlTimeSeparator))
    End Select
  End If 
End Sub
Zet de code achter het blad.
Case 5 kun je hier voor uitschakelen cq verwijderen.
 
Laatst bewerkt:
Op vraag 1: Volgens mij niet.

Op vraag 2: Volgens mij ook niet. Maar wat je zou kunnen doen is er een formule naast zetten die je bijvoorbeeld verbergt. Bijvoorbeeld =tijd-(2*tijd) dan heb je ook hetzelfde getal maar dan in minus. (dus de tijd die je negatief wilde hebben, positief schrijven, en dan 2x eraf halen. En dan een verwijzing naar die cel waar het in moet. dus = dat hokje.

Ik roep ook maar wat...
 
vandervorst,

Je kunt ook eventueel deze code gebruiken, je moet dan alleen het bereik aanpassen.
Ook deze code moet achter het Blad staan.

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

On Error Resume Next
If Intersect(target, Range("B6:C210")) 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
 
semi-automatisch omzetten van getallen in tijd:

In een vooraf bekend gebied A1:A5
Code:
Sub tst()
  [A1:A5].Value = Evaluate("INDEX(int(A1:A5/100)&" & """:""" & "&mod(A1:A5,100),)")
End Sub

In een selectie
Code:
Sub tst2()
  With Selection
    .Value = Evaluate("INDEX(int(" & .Address & "/100)&" & """:""" & "&mod(" & .Address & ",100),)")
  End With
End Sub
In een bepaald gebied
Code:
Sub tst2()
  With [B7:B456]
    .Value = Evaluate("INDEX(int(" & .Address & "/100)&" & """:""" & "&mod(" & .Address & ",100),)")
  End With
End Sub
 
Om een tijd negatief te laten uitkomen is het voldoende om deze met -1 te vermenigvuldigen . zet ergens een -1 in een cel en typ in een andere cel een tijdswaarde , vermenigvuldig deze nu en je hebt een negatieve tijdswaarde . in het bijgevoegd bestandje heb ik de -1 gevalideerd je kan de -1 uit cel I1 verslepen , kopiëren waar je wil de validering " minuur " blijft behouden . Voor de andere oplossing zie Wim Hoornvan en snb .
 

Bijlagen

Om een tijd negatief te laten uitkomen is het voldoende om deze met -1 te vermenigvuldigen . zet ergens een -1 in een cel en typ in een andere cel een tijdswaarde , vermenigvuldig deze nu en je hebt een negatieve tijdswaarde . in het bijgevoegd bestandje heb ik de -1 gevalideerd je kan de -1 uit cel I1 verslepen , kopiëren waar je wil de validering " minuur " blijft behouden . Voor de andere oplossing zie Wim Hoornvan en snb .

Ok, dat voor die negatieve tijdswaarde is wel een oplossing.
Bedankt Trucker.

Vandervorst
 
vandervorst,

Deze code maakt van 1315 13:15
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If IsDate(Target) = False And Target <> "" Then
    Select Case Len(Target)
    Case 4
      Target = Left(Target, 2) & Application.International(xlTimeSeparator) & Right(Target, 2)
    Case 5
      Target = Replace(Target, Mid(Target, 3, 1), Application.International(xlTimeSeparator))
    End Select
  End If 
End Sub
Zet de code achter het blad.
Case 5 kun je hier voor uitschakelen cq verwijderen.

Het probleem is dat ik niets van VBA ken.
Is het mogelijk om die code toe te passen in kolommen in en uit?
 

Bijlagen

Ik heb de macro op zijn plaatst gezet , heb wel de datavalidatie moeten wegpakken :eek: , bekijk het en laat maar weten . voor de macro druk Alt F11 ;)
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan