Time Tracker

D

Duncan

Hi all,

I am currently creating a time tracker but I am concerned with maybe I
should change my design at this early stage as I feel it may not be as
accurate as I wanted.

I basically have a form with a load of option buttons and they are the
'tasks', the code behind one of them for example is:

Private Sub InPutting_Click()

Dim TxtDelim, CellDelim
TxtDelim = Chr(34)
CellDelim = ","
Open "G:\LEVY_GNT\GRANTS\Processing Team - TT\Time Tracker" &
"\data.csv" For Append As #1
MyString = TxtDelim & Application.UserName & TxtDelim & CellDelim &
TxtDelim & "Started" & TxtDelim & CellDelim & TxtDelim & "Inputting" &
TxtDelim & CellDelim & TxtDelim & "at" & TxtDelim & CellDelim &
CStr(Time())
Print #1, MyString
Close #1

End Sub

Private Sub InPutting_Exit(ByVal Cancel As MSForms.ReturnBoolean)

Dim TxtDelim, CellDelim
TxtDelim = Chr(34)
CellDelim = ","
Open "G:\LEVY_GNT\GRANTS\Processing Team - TT\Time Tracker" &
"\data.csv" For Append As #1
MyString = TxtDelim & Application.UserName & TxtDelim & CellDelim &
TxtDelim & "Stopped" & TxtDelim & CellDelim & TxtDelim & "Inputting" &
TxtDelim & CellDelim & TxtDelim & "at" & TxtDelim & CellDelim &
CStr(Time())
Print #1, MyString
Close #1

End Sub


Now, this puts the data in as two lines, a start and a finish, I could
do with the whole activity being logged as one line with just a
duration instead of a start and finish and that would save me a whole
load of headaches.

But I cant work out how to design and or code it,

Any ideas anyone bearing in mind I am a real beginner with vba?

Duncan
 
G

Guest

You would probably need a public variable which you initialize in

Public StartTime as Date

Private Sub InPutting_Click()
StartTime = Time
End sub

then in the exit code, subtract the value of this variable from the current
time.

Without knowing more about the situation, this would be my guess.
 
D

Duncan

(Apologies for the duplicate posts!)

Tom:

My subs now look like

Private Sub InPutting_Click()
StartTime = Time
End Sub
Private Sub InPutting_Exit(ByVal Cancel As MSForms.ReturnBoolean)

Dim TxtDelim, CellDelim
TxtDelim = Chr(34)
CellDelim = ","
Open "G:\LEVY_GNT\GRANTS\Processing Team - TT\Time Tracker" &
"\data.csv" For Append As #1
MyString = TxtDelim & Application.UserName & TxtDelim & CellDelim &
TxtDelim & "has been" & TxtDelim & CellDelim & TxtDelim & "Inputting" &
TxtDelim & CellDelim & TxtDelim & "for" & TxtDelim & CellDelim & Time()
- StartTime
Print #1, MyString
Close #1

End Sub

But when i do it it only logs the end time, is it not minusing it
correctly?

Duncan
 
G

Guest

You didn't declare the Public Variable

Public StartTime as Date

Private Sub InPutting_Click()
StartTime = Time
End Sub


Private Sub InPutting_Exit(ByVal Cancel As MSForms.ReturnBoolean)

Dim TxtDelim, CellDelim
TxtDelim = Chr(34)
CellDelim = ","
Open "G:\LEVY_GNT\GRANTS\Processing Team - TT\Time Tracker" &
"\data.csv" For Append As #1
MyString = TxtDelim & Application.UserName & TxtDelim & CellDelim &
TxtDelim & "has been" & TxtDelim & CellDelim & TxtDelim & "Inputting" &
TxtDelim & CellDelim & TxtDelim & "for" & TxtDelim & CellDelim & Time()
- StartTime
Print #1, MyString
Close #1

End Sub



---------------------
a demo from the immediate window:

StartTime = Time

' pause for a short amount of time, then:

? format(time - StartTime,"hh:mm:ss")
00:00:21
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top