Macros for Alternative Resource Cost Rates
Here are some macros for working with alternative resource cost rates.
When editing a Resource’s Standard Rate this automatically sets Costs Rate A, visible in Resource Information.
To set an alternative rate (B-E) you edit Resource Information, click the Costs tab and select an alternative Resource Cost Rate. This is tedious for a large resource pool.
Here’s a helpful macro to copy a Custom Resource Field into Rate Table B for all Resources.
First, create an Enterprise Resource Custom cost field named Std. Rate B.
Second, open the Enterprise Resource Pool in Project Professional and add the new Std. Rate B column, populate for all resources.
Third, run this macro to copy the Std. Rate B field value to the Standard Rate B Table for all resources.
Sub SetRateBfromEntField()
'Declare Variables
Dim Res As Resource
'Loop All Resources
For Each Res In ActiveProject.Resources
'Check for Real Resource
If Not (Res Is Nothing) Then
'Set Rate Table B from Std. Rate B
Res.CostRateTables(2).PayRates(Res.CostRateTables(2).PayRates.Count).StandardRate = Res.GetField(FieldNameToFieldConstant("Std. Rate B", pjResource))
End If
Next Res
End Sub
After running the macro all resources will have the Std. Rate B value for their Rate B Table.
Need to change the the Cost Rate used in a project? Here are two additional macros for setting the Cost Rate on all project assignments.
Sub SetAllAssignmentsToCostRateB()
'Declare Variables
Dim Task As Task
Dim Assignment As Assignment
'Loop All Tasks
For Each Task In ActiveProject.Tasks
'Check for Real Task
If Not (Task Is Nothing) Then
'Loop All Assignments for the Task
For Each Assignment In Task.Assignments
'Check for Real Assignment
If Not (Assignment Is Nothing) Then
'Change Cost Rate Table
Assignment.CostRateTable = 1
End If
Next Assignment
End If
Next Task
End Sub
Sub SetAllAssignmentsToCostRateA()
'Declare Variables
Dim Task As Task
Dim Assignment As Assignment
'Loop All Tasks
For Each Task In ActiveProject.Tasks
'Check for Real Task
If Not (Task Is Nothing) Then
'Loop All Assignments for the Task
For Each Assignment In Task.Assignments
'Check for Real Assignment
If Not (Assignment Is Nothing) Then
'Change Cost Rate Table
Assignment.CostRateTable = 0
End If
Next Assignment
End If
Next Task
End Sub