Regular Time and Over Time

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

I am working with a spreadsheet that contains whole hour times for Regular,
Over, Sick and Vacation times. When 9 is placed in Regular time, I want the
number to remain at the max number of 8 hours Regular time, moving the 1 hour
Over time into the next cell.


Reg Over Sick Vacation
Monday 9 1 0 0
Tuesday 8


When I type that 9 in, I am looking for a function or VBA code that can
automatically make it 8 and move the 1 over. I have figured out how to move
the 1 over using =IF(C8>8,C8-8,"-") but it would be nice to be able to type
that 9 and it will automatically make it 8 and then a 1 goes into the Over
column.

Any suggestions? Thanks!
 
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Const WS_RANGE As String = "B:B"

On Error GoTo ws_exit:
Application.EnableEvents = False
If Not Intersect(Target, Me.Range(WS_RANGE)) Is Nothing Then
With Target
If .Value > 8 Then
.Offset(0, 1).Value = .Value - 8
.Value = 8
End With
End If

ws_exit:
Application.EnableEvents = True
End Sub

'This is worksheet event code, which means that it needs to be
'placed in the appropriate worksheet code module, not a standard
'code module. To do this, right-click on the sheet tab, select
'the View Code option from the menu, and paste the code in.


--

HTH

RP
(remove nothere from the email address if mailing direct)
 
Try this. It may not be the most effecient use of system resources but
it works.

Unfortunately, it fires on EVERY cell that has a number greater than 8,
not just the regular hours.


Code:
--------------------
Public oldcell As String
---------------------
Private Sub Worksheet_Activate()
oldcell = ActiveCell.Address
End Sub
---------------------
Private Sub Worksheet_Change(ByVal Target As Range)

If Range(oldcell).Value > 8 Then

Range(oldcell).Select
temphrs = ActiveCell - 8
ActiveCell.Value = 8
ActiveCell.Offset(0, 1) = ActiveCell.Offset(0, 1) + temphrs
End If
oldcell = ActiveCell.Address


End Sub
 

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

Back
Top