Sub TSheetv2()
Dim myWorkBook As Workbook
Dim myBaseWorkSheet As Worksheet
Dim myBaseRange As Range
Dim myBaseRow As Range
Dim RowsCounter As Long
Dim StartDate As Date
Dim EndDate As Date
Dim LastRow As Long
On Error Resume Next
StartDate = Application.InputBox("Enter start date", Type:=2)
On Error GoTo 0
If StartDate > 0 Then
On Error Resume Next
EndDate = Application.InputBox("Enter end date", Type:=2)
On Error GoTo 0
If EndDate > 0 Then
If EndDate < StartDate Then
MsgBox "Start date can not be earlier than end date"
Else
End If
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
Worksheets("Approved Timesheets").Delete
Worksheets("Approved Timesheets Pivot").Delete
Worksheets("Pending Timesheets").Delete
Worksheets("Pending Timesheets Pivot").Delete
Worksheets("Declined Timesheets").Delete
Worksheets("Declined Timesheets Pivot").Delete
On Error GoTo 0
Application.DisplayAlerts = True
'// Add Additional Sheets
Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = "Approved Timesheets"
Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = "Approved Timesheets Pivot"
Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = "Pending Timesheets"
Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = "Pending Timesheets Pivot"
Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = "Declined Timesheets"
Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = "Declined Timesheets Pivot"
'// Add required columns and formulas
With Sheets("Timesheet Details")
LastRow = .Cells(.Rows.Count, "H").End(xlUp).Row
.Range("B1").Value = "Order ID"
With .Range("A1:AR1")
.Interior.ColorIndex = 6
.Font.Bold = True
.AutoFilter
End With
.Columns("AR:AR").Insert Shift:=xlToRight
.Range("AR1").Value = "Approved in W/e"
.Range("AR2").Resize(LastRow - 1).FormulaR1C1 = "=RC[-1]+CHOOSE(WEEKDAY(RC[-1]),0,6,5,4,3,2,1)"
.Columns("AS:AS").Insert Shift:=xlToRight
.Range("AS1").Value = "Total Amount"
.Range("AS2").Resize(LastRow - 1).FormulaR1C1 = _
"=SUM(RC[-14]*RC[-31])+(RC[-13]*RC[-30])+(RC[-12]*RC[-29])"
.Range("AS2").Resize(LastRow - 1).NumberFormat = _
"_-[$?-809]* #,##0.00_-;-[$?-809]* #,##0.00_-;_-[$?-809]* ""-""??_-;_-@_-"
.Columns("Y:Y").Insert Shift:=xlToRight
.Range("Y1").Value = "Timesheet For W/e"
.Range("Y2").Resize(LastRow - 1).FormulaR1C1 = "=RC[-1]+CHOOSE(WEEKDAY(RC[-1]),0,6,5,4,3,2,1)"
'// Copy Data to correct Sheets
Set myBaseRange = .Rows("1:" & LastRow)
myBaseRange.AutoFilter Field:=21, Criteria1:="Approved"
myBaseRange.SpecialCells(xlCellTypeVisible).Copy Sheets("Approved Timesheets").Cells
Worksheets("Approved Timesheets").Rows("1:1").AutoFilter
myBaseRange.AutoFilter Field:=21, Criteria1:="Pending"
myBaseRange.SpecialCells(xlCellTypeVisible).Copy Sheets("Pending Timesheets").Cells
Worksheets("Pending Timesheets").Rows("1:1").AutoFilter
myBaseRange.AutoFilter Field:=21, Criteria1:="Declined"
myBaseRange.SpecialCells(xlCellTypeVisible).Copy Sheets("Declined Timesheets").Cells
Worksheets("Declined Timesheets").Rows("1:1").AutoFilter
End With
'// Delete non required data from each worksheet
With Sheets("Approved Timesheets")
LastRow = .Cells(.Rows.Count, "H").End(xlUp).Row
.Columns("X:X").Insert Shift:=xlToRight
.Range("X2").Resize(LastRow - 1).Formula = "=AND(V2>=" & CLng(StartDate) & _
",W2<=" & CLng(EndDate) & ")"
Set myBaseRange = .Rows("1:" & LastRow)
myBaseRange.AutoFilter Field:=24, _
Criteria1:="=FALSE"
On Error Resume Next
Set myBaseRange = .Range("V2").Resize(LastRow - 1).SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Not myBaseRange Is Nothing Then
myBaseRange.EntireRow.Delete
End If
.Columns("X:X").Delete
End With
With Sheets("Pending Timesheets")
LastRow = .Cells(.Rows.Count, "H").End(xlUp).Row
.Columns("X:X").Insert Shift:=xlToRight
.Range("X2").Resize(LastRow - 1).Formula = "=AND(V2>=" & CLng(StartDate) & _
",W2<=" & CLng(EndDate) & ")"
Set myBaseRange = .Rows("1:" & LastRow)
myBaseRange.AutoFilter Field:=24, _
Criteria1:="=FALSE"
On Error Resume Next
Set myBaseRange = .Range("V2").Resize(LastRow - 1).SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Not myBaseRange Is Nothing Then
myBaseRange.EntireRow.Delete
End If
.Columns("X:X").Delete
End With
With Sheets("Declined Timesheets")
LastRow = .Cells(.Rows.Count, "H").End(xlUp).Row
.Columns("X:X").Insert Shift:=xlToRight
.Range("X2").Resize(LastRow - 1).Formula = "=AND(V2>=" & CLng(StartDate) & _
",W2<=" & CLng(EndDate) & ")"
Set myBaseRange = .Rows("1:" & LastRow)
myBaseRange.AutoFilter Field:=24, _
Criteria1:="=FALSE"
On Error Resume Next
Set myBaseRange = .Range("V2").Resize(LastRow - 1).SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Not myBaseRange Is Nothing Then
myBaseRange.EntireRow.Delete
End If
.Columns("X:X").Delete
End With
End If
End If
'// Create Approved Timesheets Pivot
Sheets("Approved Timesheets").Select
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"'Approved Timesheets'!A:AU").CreatePivotTable _
TableDestination:="'Approved Timesheets Pivot'!R3C1", TableName:="PivotTable1", DefaultVersion _
:=xlPivotTableVersion10
Sheets("Approved Timesheets Pivot").Select
Cells(3, 1).Select
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Order ID")
.Subtotals = Array(False, False, False, False, False, False, False, False, False, _
False, False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields("Timesheet ID").Subtotals = _
Array(False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields("X-Ref PO ID").Subtotals = _
Array(False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields("User ID").Subtotals = Array _
(False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"Contingent Staff First Name").Subtotals = Array(False, False, False, False, False, _
False, False, False, False, False, False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields("Contingent Staff Last Name" _
).Subtotals = Array(False, False, False, False, False, False, False, False, False, False _
, False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields("Standard Rate").Subtotals _
= Array(False, False, False, False, False, False, False, False, False, False, False, False _
)
ActiveSheet.PivotTables("PivotTable1").PivotFields("Overtime Rate").Subtotals _
= Array(False, False, False, False, False, False, False, False, False, False, False, False _
)
ActiveSheet.PivotTables("PivotTable1").PivotFields("Second Overtime Rate"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields("Regular Hours").Subtotals _
= Array(False, False, False, False, False, False, False, False, False, False, False, False _
)
ActiveSheet.PivotTables("PivotTable1").PivotFields("Total Overtime Hours"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"Total Second Overtime Hours").Subtotals = Array(False, False, False, False, False, _
False, False, False, False, False, False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"Timesheet For W/e").Subtotals = Array(False, False, False, False, False, _
False, False, False, False, False, False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"Date Approved").Subtotals = Array(False, False, False, False, False, _
False, False, False, False, False, False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields("Total Amount").Subtotals = _
Array(False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("PivotTable1").AddFields RowFields:=Array("Order ID", _
"X-Ref PO ID", "User ID", "Contingent Staff First Name", _
"Contingent Staff Last Name", "Timesheet ID", "Timesheet For W/e", "Date Approved", "Regular Hours", "Standard Rate", _
"Total Overtime Hours", "Overtime Rate", "Total Second Overtime Hours", _
"Second Overtime Rate", "Total Amount")
ActiveSheet.PivotTables("PivotTable1").PivotFields("Timesheet ID").Orientation _
= xlDataField
End With
Sheets("Approved Timesheets Pivot").Select
Rows("4:4").Select
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("D:D,E:E").Select
Range("E1").Activate
Selection.ColumnWidth = 9.71
Columns("F:F").ColumnWidth = 9.43
Range("H:H,J:J,L:L,M:M").Select
Range("M1").Activate
Selection.NumberFormat = _
"_-[$?-809]* #,##0.00_-;-[$?-809]* #,##0.00_-;_-[$?-809]* ""-""??_-;_-@_-"
Range("A1").Select
Columns("A:A").ColumnWidth = 10.57
Columns("B:B").ColumnWidth = 10.57
Columns("N:N").Select
Selection.EntireColumn.Hidden = True
Range("A1").Select
'// Create Pending Timesheets Pivot
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"'Pending Timesheets'!A:AU").CreatePivotTable _
TableDestination:="'Pending Timesheets Pivot'!R3C1", TableName:="PivotTable1", DefaultVersion _
:=xlPivotTableVersion10
Sheets("Pending Timesheets Pivot").Select
Cells(3, 1).Select
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Order ID")
.Subtotals = Array(False, False, False, False, False, False, False, False, False, _
False, False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields("Timesheet ID").Subtotals = _
Array(False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields("X-Ref PO ID").Subtotals = _
Array(False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields("User ID").Subtotals = Array _
(False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"Contingent Staff First Name").Subtotals = Array(False, False, False, False, False, _
False, False, False, False, False, False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields("Contingent Staff Last Name" _
).Subtotals = Array(False, False, False, False, False, False, False, False, False, False _
, False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields("Standard Rate").Subtotals _
= Array(False, False, False, False, False, False, False, False, False, False, False, False _
)
ActiveSheet.PivotTables("PivotTable1").PivotFields("Overtime Rate").Subtotals _
= Array(False, False, False, False, False, False, False, False, False, False, False, False _
)
ActiveSheet.PivotTables("PivotTable1").PivotFields("Second Overtime Rate"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields("Regular Hours").Subtotals _
= Array(False, False, False, False, False, False, False, False, False, False, False, False _
)
ActiveSheet.PivotTables("PivotTable1").PivotFields("Total Overtime Hours"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"Total Second Overtime Hours").Subtotals = Array(False, False, False, False, False, _
False, False, False, False, False, False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"Timesheet For W/e").Subtotals = Array(False, False, False, False, False, _
False, False, False, False, False, False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"Date Approved").Subtotals = Array(False, False, False, False, False, _
False, False, False, False, False, False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields("Total Amount").Subtotals = _
Array(False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("PivotTable1").AddFields RowFields:=Array("Order ID", _
"X-Ref PO ID", "User ID", "Contingent Staff First Name", _
"Contingent Staff Last Name", "Timesheet ID", "Timesheet For W/e", "Date Approved", "Regular Hours", "Standard Rate", _
"Total Overtime Hours", "Overtime Rate", "Total Second Overtime Hours", _
"Second Overtime Rate", "Total Amount")
ActiveSheet.PivotTables("PivotTable1").PivotFields("Timesheet ID").Orientation _
= xlDataField
End With
Sheets("Pending Timesheets Pivot").Select
Rows("4:4").Select
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("D:D,E:E").Select
Range("E1").Activate
Selection.ColumnWidth = 9.71
Columns("F:F").ColumnWidth = 9.43
Range("H:H,J:J,L:L,M:M").Select
Range("M1").Activate
Selection.NumberFormat = _
"_-[$?-809]* #,##0.00_-;-[$?-809]* #,##0.00_-;_-[$?-809]* ""-""??_-;_-@_-"
Range("A1").Select
Columns("A:A").ColumnWidth = 10.57
Columns("B:B").ColumnWidth = 10.57
Columns("N:N").Select
Selection.EntireColumn.Hidden = True
Range("A1").Select
'// Create Declined Timesheets Pivot
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"'Declined Timesheets'!A:AU").CreatePivotTable _
TableDestination:="'Declined Timesheets Pivot'!R3C1", TableName:="PivotTable1", DefaultVersion _
:=xlPivotTableVersion10
Sheets("Declined Timesheets Pivot").Select
Cells(3, 1).Select
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Order ID")
.Subtotals = Array(False, False, False, False, False, False, False, False, False, _
False, False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields("Timesheet ID").Subtotals = _
Array(False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields("X-Ref PO ID").Subtotals = _
Array(False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields("User ID").Subtotals = Array _
(False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"Contingent Staff First Name").Subtotals = Array(False, False, False, False, False, _
False, False, False, False, False, False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields("Contingent Staff Last Name" _
).Subtotals = Array(False, False, False, False, False, False, False, False, False, False _
, False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields("Standard Rate").Subtotals _
= Array(False, False, False, False, False, False, False, False, False, False, False, False _
)
ActiveSheet.PivotTables("PivotTable1").PivotFields("Overtime Rate").Subtotals _
= Array(False, False, False, False, False, False, False, False, False, False, False, False _
)
ActiveSheet.PivotTables("PivotTable1").PivotFields("Second Overtime Rate"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields("Regular Hours").Subtotals _
= Array(False, False, False, False, False, False, False, False, False, False, False, False _
)
ActiveSheet.PivotTables("PivotTable1").PivotFields("Total Overtime Hours"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"Total Second Overtime Hours").Subtotals = Array(False, False, False, False, False, _
False, False, False, False, False, False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"Timesheet For W/e").Subtotals = Array(False, False, False, False, False, _
False, False, False, False, False, False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"Date Approved").Subtotals = Array(False, False, False, False, False, _
False, False, False, False, False, False, False)
ActiveSheet.PivotTables("PivotTable1").PivotFields("Total Amount").Subtotals = _
Array(False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("PivotTable1").AddFields RowFields:=Array("Order ID", _
"X-Ref PO ID", "User ID", "Contingent Staff First Name", _
"Contingent Staff Last Name", "Timesheet ID", "Timesheet For W/e", "Date Approved", "Regular Hours", "Standard Rate", _
"Total Overtime Hours", "Overtime Rate", "Total Second Overtime Hours", _
"Second Overtime Rate", "Total Amount")
ActiveSheet.PivotTables("PivotTable1").PivotFields("Timesheet ID").Orientation _
= xlDataField
End With
Sheets("Declined Timesheets Pivot").Select
Rows("4:4").Select
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("D:D,E:E").Select
Range("E1").Activate
Selection.ColumnWidth = 9.71
Columns("F:F").ColumnWidth = 9.43
Range("H:H,J:J,L:L,M:M").Select
Range("M1").Activate
Selection.NumberFormat = _
"_-[$?-809]* #,##0.00_-;-[$?-809]* #,##0.00_-;_-[$?-809]* ""-""??_-;_-@_-"
Range("A1").Select
Columns("A:A").ColumnWidth = 10.57
Columns("B:B").ColumnWidth = 10.57
Columns("N:N").Select
Selection.EntireColumn.Hidden = True
Range("A1").Select
Application.ScreenUpdating = True
End Sub
Issues are: