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

Formule voor tijd berekenen in VBA

Status
Niet open voor verdere reacties.

lenaers

Gebruiker
Lid geworden
19 mei 2010
Berichten
44
Ik ben iets aan het proberen voor mijn werkverslagen beter bij te houden voor het werk, om er na een mooi overzicht the maken van hoe lang ik waar heb gewerkt, maar ik ben op een probleem gestoten. Ik wil dus namelijk een begin en een eind uur ingeven. Dat lukt zonder problemen maar dan zou die ook nog moeten kunnen weegeven dat het bv 2 uur is dat ik daar gewerkt heb. Dat lukt wel als ik een formule in de cel zet, maar dat zou automatisch moeten gebeuren.

Ik heb dus al een userform gemaakt waar ik dus zaken kan in geven en de uren ook, en dat komt allemaal zeer mooi in mijn excel file.

Code:
Private Sub cmdAdd_Click()

Dim iRow As Long
Dim ws As Worksheet
Set ws = Worksheets("Werk")


iRow = ws.Cells.Find(What:="*", SearchOrder:=xlRows, _
    SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1


If Trim(Me.txtStart.Value) = "" Then
  Me.txtStart.SetFocus
  MsgBox "Geef een begin tijd in.", , "Error"
  Exit Sub
End If


With ws

  .Cells(iRow, 1).Value = Me.txtDate.Value
  .Cells(iRow, 2).Value = Me.lbLocation.Value
  .Cells(iRow, 3).Value = Me.txtStart.Value
  .Cells(iRow, 4).Value = Me.txtEnd.Value
  .Cells(iRow, 6).Value = Me.txtmensen.Value
  
  
  
End With


Me.txtDate.Value = Format(Date, "dd/mm/yyyy")
Me.lbLocation.Value = ""
Me.txtStart.Value = ""
Me.txtEnd.Value = ""
Me.txtmensen.Value = ""


End Sub

Private Sub cmdExit_Click()
Unload Me
End Sub



Private Sub UserForm_Initialize()

txtDate.Value = Format(Date, "dd/mm/yyyy")


With lbLocation

    .AddItem "Beverst Nieuw"
    .AddItem "Bevert Oud"
    .AddItem "Bilzen"
    .AddItem "Eigenbilzen"
    .AddItem "Grote spauwen Nieuw"
    .AddItem "Grote spauwen Oud"
    .AddItem "Hees"
    .AddItem "Hoelbeek"
    .AddItem "Kleine spauwen"
    .AddItem "Martenslinde"
    .AddItem "Mopertingen"
    .AddItem "Munsterbilzen"
    .AddItem "Rijkhoven"
    .AddItem "Rosmeer Nieuw"
    .AddItem "Rosmeer Oud"
    .AddItem "Waltwilder"
    
End With

End Sub


Kan ik daar iets bij maken dat het automatisch word geteld in een bepaalde cel (cel 5) ? Ik kan blijkbaar ook geen document uploaden, dus heb ik de code maar geplakt hier.
en in cel 7 zou dan dat uur x aantal mensen gedaan moeten worden, en dat krijg ik echt niet voor de wereld.

want ik zou daar later dan ook rapporten voor willen uitdraaien, daar kan ik wel al wat mee met die draaitabellen, maar zou later dan graag zoiets willen maken waar ik dan de locatie kan kiezen en dat die dan een rapport genereerd van alleen die locatie. En of locatie en maand :) ik weet dat het wel mogelijk is maar dat is niet zo dringend

iemand die me verder opweg kan helpen hier mee?

dank bij voorbaat
 
Een bijlage kan je uploaden door -> Ga geavanceerd -> en de paperclip te drukken (als het bestand te groot is sla je het eerst op als xlsb)
 
om de de uren uit te rekenen
Code:
val(txtEnd)-val(txtStart)
 
Voor het wegschrijven van de gegevens

Code:
Sheets("Werk").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 6) = Array(CDate(txtDate), lbLocation, TimeValue(txtStart), TimeValue(txtEnd), TimeValue(txtEnd) - TimeValue(txtStart), Val(txtmensen))

Voor het vullen van de combobox
Code:
lbLocation.List = Split("Beverst Nieuw|Bevert Oud|Bilzen|Eigenbilzen|Grote spauwen Nieuw|Grote spauwen Oud|Hees|Hoelbeek|Kleine spauwen|Martenslinde|Mopertingen|Munsterbilzen|Rijkhoven|Rosmeer Nieuw|Rosmeer Oud|Waltwilder", "|")
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan