B
Buffyslay
hi all -
am running some code and its ****really**** slow.... why???
****************************
Sub AA_updateSalaries()
Dim i, j, k, m, n, p As Integer
Dim strForm1, strForm2, strForm3, strForm4, strForm5, strForm6,
strForm7
Dim strCC, sOut As String
Dim strForm1a, strForm1b, strForm1c, strForm1d
Dim iFileNum As Integer
Dim lRowCount As Long
Dim lRow As Long
Dim iColCount As Integer
Dim iCol As Integer
Dim Arr()
Workbooks("2007 Budget GDAA.xls").Activate
Worksheets("Salaries").Select
Sheets("SRD").Select
Range("B6").Select
lRowCount = ActiveSheet.UsedRange.Rows.Count
iColCount = ActiveSheet.UsedRange.Columns.Count
Application.ScreenUpdating = False
'Dim aEmpDetails As Variant 'MUST be variant, no brackets
'aEmpDetails = Range("B6").Resize(lRowCount, 2)
'Range("B18").Resize(lRowCount, 2) = aEmpDetails
j = lRowCount - 5
k = 18
Dim strMess
ReDim Arr(1 To j, 1 To k)
Range("B6").Select
For i = 1 To j
For k = 1 To 18
Arr(i, k) = ActiveCell.Value
ActiveCell.Interior.ColorIndex = 40
strMess = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
Next k
ActiveCell.Offset(1, -18).Select
ActiveCell.Interior.ColorIndex = 44
Next i
Worksheets("Salaries").Select
Range("B4").Select
For m = 1 To j
If Arr(m, 1) = "" Then
Else
ActiveCell.Value = Arr(m, 1)
ActiveCell.Offset(0, 1).Select
strMess = ActiveCell.Value
ActiveCell.Value = Arr(m, 2)
ActiveCell.Offset(0, 1).Select
strForm1a = "=IF(AND((MONTH(" & Chr(34) & Arr(m, 9) & Chr(34) & ")<="
strForm1b = "),(MONTH(" & Chr(34) & Arr(m, 10) & Chr(34) & ")>="
strForm1c = ")),"
' salary
For n = 1 To 12
strForm1 = strForm1a & n & strForm1b & n & strForm1c
strForm2 = strForm1 & Arr(m, 3) & ",0)"
ActiveCell.Formula = strForm2
ActiveCell.Interior.ColorIndex = 24
ActiveCell.Offset(0, 1).Select
Next n
ActiveCell.Interior.ColorIndex = 24
ActiveCell.Offset(0, 1).Value = "SAL01"
ActiveCell.Offset(1, -12).Select
' shift
For n = 1 To 12
strForm1 = strForm1a & n & strForm1b & n & strForm1c
strForm3 = strForm1 & Arr(m, 6) & ",0)"
ActiveCell.Formula = strForm3
ActiveCell.Interior.ColorIndex = 24
ActiveCell.Offset(0, 1).Select
Next n
ActiveCell.Interior.ColorIndex = 24
ActiveCell.Offset(0, 1).Value = "SAL01"
ActiveCell.Offset(1, -12).Select
' pension
For n = 1 To 12
strForm1 = strForm1a & n & strForm1b & n & strForm1c
strForm3 = strForm1 & "Round(Pension_Rate*" & Arr(m, 3) &
",0),0)"
ActiveCell.Formula = strForm3
ActiveCell.Offset(0, 1).Select
ActiveCell.Interior.ColorIndex = 24
Next n
ActiveCell.Interior.ColorIndex = 24
ActiveCell.Offset(0, 1).Value = "SAL05"
ActiveCell.Offset(0, 2).FormulaR1C1 = "=SUM(RC[-12]:RC[-1])"
ActiveCell.Offset(1, -12).Select
' PHI
For n = 1 To 12
strForm1 = strForm1a & n & strForm1b & n & strForm1c
strForm3 = strForm1 & "Round(PHI_Amount_pa/12,0),0)"
ActiveCell.Formula = strForm3
ActiveCell.Offset(0, 1).Select
ActiveCell.Interior.ColorIndex = 24
Next n
ActiveCell.Interior.ColorIndex = 24
ActiveCell.Offset(0, 1).Value = "SAL20"
ActiveCell.Offset(0, 2).FormulaR1C1 = "=SUM(RC[-12]:RC[-1])"
ActiveCell.Offset(1, -12).Select
' NI
For n = 1 To 12
strForm7 = strForm1a & n & strForm1b & n & strForm1c
p = Arr(m, 3) + Arr(m, 6) + Arr(m, 7) + Arr(m, 5)
strForm7 = strForm7 & p & "*NI_Rate,0)"
' MsgBox strForm7
ActiveCell.Formula = strForm7
ActiveCell.Interior.ColorIndex = 24
ActiveCell.Offset(0, 1).Select
Next n
ActiveCell.Interior.ColorIndex = 24
ActiveCell.Offset(0, 1).Value = "SAL05"
ActiveCell.Offset(0, 2).FormulaR1C1 = "=SUM(RC[-12]:RC[-1])"
ActiveCell.Offset(1, -12).Select
' Sports
For n = 1 To 12
strForm1 = strForm1a & n & strForm1b & n & strForm1c
ActiveCell.Formula = strForm1 & "SportSocial_ph,0)"
ActiveCell.Interior.ColorIndex = 24
ActiveCell.Offset(0, 1).Select
Next n
ActiveCell.Interior.ColorIndex = 24
ActiveCell.Offset(0, 1).Value = "SAL10"
ActiveCell.Offset(0, 2).FormulaR1C1 = "=SUM(RC[-12]:RC[-1])"
ActiveCell.Offset(1, -12).Select
' Bonus / Retention
For n = 1 To 12
strForm1 = strForm1a & n & strForm1b & n & strForm1c
ActiveCell.Formula = strForm1 & Arr(m, 5) & ",0)"
ActiveCell.Offset(0, 1).Select
Next n
ActiveCell.Offset(0, 1).Value = "SAL20"
ActiveCell.Offset(0, 2).FormulaR1C1 = "=SUM(RC[-12]:RC[-1])"
ActiveCell.Offset(1, -12).Select
' Mobile Phones
For n = 1 To 12
strForm1 = strForm1a & n & strForm1b & n & strForm1c
ActiveCell.Formula = strForm1 & Arr(m, 7) & ",0)"
ActiveCell.Offset(0, 1).Select
Next n
ActiveCell.Offset(0, 1).Value = "SAL04"
ActiveCell.Offset(0, 2).FormulaR1C1 = "=SUM(RC[-12]:RC[-1])"
ActiveCell.Offset(1, -12).Select
' Overtime
For n = 1 To 12
strForm1 = strForm1a & n & strForm1b & n & strForm1c
ActiveCell.Formula = strForm1 & Arr(m, 3) & ",0)"
ActiveCell.Offset(0, 1).Select
Next n
ActiveCell.Offset(0, 1).Value = "SAL02"
ActiveCell.Offset(1, -12).Select
' Acquisition Costs
For n = 1 To 12
strForm1a = "=IF(MONTH(" & Chr(34) & Arr(m, 9) & Chr(34) & ")="
& n & ","
ActiveCell.Formula = strForm1a & Arr(m, 8) & ",0)"
ActiveCell.Offset(0, 1).Select
Next n
ActiveCell.Offset(0, 1).Value = "SAL02"
ActiveCell.Offset(0, 2).FormulaR1C1 = "=SUM(RC[-12]:RC[-1])"
ActiveCell.Offset(1, -12).Select
ActiveCell.Offset(0, -2).Select
End If
Next m
Application.ScreenUpdating = True
MsgBox "Done"
End Sub
am running some code and its ****really**** slow.... why???
****************************
Sub AA_updateSalaries()
Dim i, j, k, m, n, p As Integer
Dim strForm1, strForm2, strForm3, strForm4, strForm5, strForm6,
strForm7
Dim strCC, sOut As String
Dim strForm1a, strForm1b, strForm1c, strForm1d
Dim iFileNum As Integer
Dim lRowCount As Long
Dim lRow As Long
Dim iColCount As Integer
Dim iCol As Integer
Dim Arr()
Workbooks("2007 Budget GDAA.xls").Activate
Worksheets("Salaries").Select
Sheets("SRD").Select
Range("B6").Select
lRowCount = ActiveSheet.UsedRange.Rows.Count
iColCount = ActiveSheet.UsedRange.Columns.Count
Application.ScreenUpdating = False
'Dim aEmpDetails As Variant 'MUST be variant, no brackets
'aEmpDetails = Range("B6").Resize(lRowCount, 2)
'Range("B18").Resize(lRowCount, 2) = aEmpDetails
j = lRowCount - 5
k = 18
Dim strMess
ReDim Arr(1 To j, 1 To k)
Range("B6").Select
For i = 1 To j
For k = 1 To 18
Arr(i, k) = ActiveCell.Value
ActiveCell.Interior.ColorIndex = 40
strMess = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
Next k
ActiveCell.Offset(1, -18).Select
ActiveCell.Interior.ColorIndex = 44
Next i
Worksheets("Salaries").Select
Range("B4").Select
For m = 1 To j
If Arr(m, 1) = "" Then
Else
ActiveCell.Value = Arr(m, 1)
ActiveCell.Offset(0, 1).Select
strMess = ActiveCell.Value
ActiveCell.Value = Arr(m, 2)
ActiveCell.Offset(0, 1).Select
strForm1a = "=IF(AND((MONTH(" & Chr(34) & Arr(m, 9) & Chr(34) & ")<="
strForm1b = "),(MONTH(" & Chr(34) & Arr(m, 10) & Chr(34) & ")>="
strForm1c = ")),"
' salary
For n = 1 To 12
strForm1 = strForm1a & n & strForm1b & n & strForm1c
strForm2 = strForm1 & Arr(m, 3) & ",0)"
ActiveCell.Formula = strForm2
ActiveCell.Interior.ColorIndex = 24
ActiveCell.Offset(0, 1).Select
Next n
ActiveCell.Interior.ColorIndex = 24
ActiveCell.Offset(0, 1).Value = "SAL01"
ActiveCell.Offset(1, -12).Select
' shift
For n = 1 To 12
strForm1 = strForm1a & n & strForm1b & n & strForm1c
strForm3 = strForm1 & Arr(m, 6) & ",0)"
ActiveCell.Formula = strForm3
ActiveCell.Interior.ColorIndex = 24
ActiveCell.Offset(0, 1).Select
Next n
ActiveCell.Interior.ColorIndex = 24
ActiveCell.Offset(0, 1).Value = "SAL01"
ActiveCell.Offset(1, -12).Select
' pension
For n = 1 To 12
strForm1 = strForm1a & n & strForm1b & n & strForm1c
strForm3 = strForm1 & "Round(Pension_Rate*" & Arr(m, 3) &
",0),0)"
ActiveCell.Formula = strForm3
ActiveCell.Offset(0, 1).Select
ActiveCell.Interior.ColorIndex = 24
Next n
ActiveCell.Interior.ColorIndex = 24
ActiveCell.Offset(0, 1).Value = "SAL05"
ActiveCell.Offset(0, 2).FormulaR1C1 = "=SUM(RC[-12]:RC[-1])"
ActiveCell.Offset(1, -12).Select
' PHI
For n = 1 To 12
strForm1 = strForm1a & n & strForm1b & n & strForm1c
strForm3 = strForm1 & "Round(PHI_Amount_pa/12,0),0)"
ActiveCell.Formula = strForm3
ActiveCell.Offset(0, 1).Select
ActiveCell.Interior.ColorIndex = 24
Next n
ActiveCell.Interior.ColorIndex = 24
ActiveCell.Offset(0, 1).Value = "SAL20"
ActiveCell.Offset(0, 2).FormulaR1C1 = "=SUM(RC[-12]:RC[-1])"
ActiveCell.Offset(1, -12).Select
' NI
For n = 1 To 12
strForm7 = strForm1a & n & strForm1b & n & strForm1c
p = Arr(m, 3) + Arr(m, 6) + Arr(m, 7) + Arr(m, 5)
strForm7 = strForm7 & p & "*NI_Rate,0)"
' MsgBox strForm7
ActiveCell.Formula = strForm7
ActiveCell.Interior.ColorIndex = 24
ActiveCell.Offset(0, 1).Select
Next n
ActiveCell.Interior.ColorIndex = 24
ActiveCell.Offset(0, 1).Value = "SAL05"
ActiveCell.Offset(0, 2).FormulaR1C1 = "=SUM(RC[-12]:RC[-1])"
ActiveCell.Offset(1, -12).Select
' Sports
For n = 1 To 12
strForm1 = strForm1a & n & strForm1b & n & strForm1c
ActiveCell.Formula = strForm1 & "SportSocial_ph,0)"
ActiveCell.Interior.ColorIndex = 24
ActiveCell.Offset(0, 1).Select
Next n
ActiveCell.Interior.ColorIndex = 24
ActiveCell.Offset(0, 1).Value = "SAL10"
ActiveCell.Offset(0, 2).FormulaR1C1 = "=SUM(RC[-12]:RC[-1])"
ActiveCell.Offset(1, -12).Select
' Bonus / Retention
For n = 1 To 12
strForm1 = strForm1a & n & strForm1b & n & strForm1c
ActiveCell.Formula = strForm1 & Arr(m, 5) & ",0)"
ActiveCell.Offset(0, 1).Select
Next n
ActiveCell.Offset(0, 1).Value = "SAL20"
ActiveCell.Offset(0, 2).FormulaR1C1 = "=SUM(RC[-12]:RC[-1])"
ActiveCell.Offset(1, -12).Select
' Mobile Phones
For n = 1 To 12
strForm1 = strForm1a & n & strForm1b & n & strForm1c
ActiveCell.Formula = strForm1 & Arr(m, 7) & ",0)"
ActiveCell.Offset(0, 1).Select
Next n
ActiveCell.Offset(0, 1).Value = "SAL04"
ActiveCell.Offset(0, 2).FormulaR1C1 = "=SUM(RC[-12]:RC[-1])"
ActiveCell.Offset(1, -12).Select
' Overtime
For n = 1 To 12
strForm1 = strForm1a & n & strForm1b & n & strForm1c
ActiveCell.Formula = strForm1 & Arr(m, 3) & ",0)"
ActiveCell.Offset(0, 1).Select
Next n
ActiveCell.Offset(0, 1).Value = "SAL02"
ActiveCell.Offset(1, -12).Select
' Acquisition Costs
For n = 1 To 12
strForm1a = "=IF(MONTH(" & Chr(34) & Arr(m, 9) & Chr(34) & ")="
& n & ","
ActiveCell.Formula = strForm1a & Arr(m, 8) & ",0)"
ActiveCell.Offset(0, 1).Select
Next n
ActiveCell.Offset(0, 1).Value = "SAL02"
ActiveCell.Offset(0, 2).FormulaR1C1 = "=SUM(RC[-12]:RC[-1])"
ActiveCell.Offset(1, -12).Select
ActiveCell.Offset(0, -2).Select
End If
Next m
Application.ScreenUpdating = True
MsgBox "Done"
End Sub