Terug naar de startpagina

Representing Non-Working Time as Tasks in Microsoft Project

By Jan De Messemaeker, Microsoft Project Most Valuable Professional

The author

The author runs Prom+ade BVBA . He is a consultant on Project Management, specifically on the role of Microsoft Project in these methods. The article below is a response to a question Jan has been hearing with nearly all his customers, and it offers a complete solution to the dilemma.


A frequently asked question about “best practices” in Microsoft Project usage is about the use of unmovable tasks to represent non productive activities rather than their introduction into the resource calendar as non working days. Whereas the latter seems the most natural, and certainly the simplest as non-working days are immediately taken into account by the calculation - it has a few drawbacks:

Using immovable tasks to represent non-working days will solve both these problems, as is explained below. Moreover, it will provide a visual “Gantt Chart” representation of holidays. However, many project managers have already been introducing non-working time in the resources’ calendar. This means that migrating to this alternative representation can imply quite some work, which as such has only little added value for the project manager himself.

The VBA macro presented here will perform this migration automatically, creating these immovable tasks tasks and eliminating non-working days from existing calendars.

Scheduling without non-working days in the calendar

Obviously, representing non-working time as tasks will solve the reporting problem as a fully allocated resource will show a 100% occupation in any Usage report when his absences are counted as worked time. However, with “normal” scheduling the method will cause two distortions in the plan: the cost of the non-working time will be allocated to the project, and work on “real” tasks happily goes on during these absences.

The cost problem can be avoided in two ways. Either you create for each resource a cost rate table with zero cost, and assign this table to each non-working assignment or (which is the solution presented in the macro attached) you put the non-working tasks in a separate project such that they do not influence the cost of your original project.

As for the scheduling problem, there is Resource Leveling. This highly underestimated feature of Microsoft Project, solves our problem as:

  1. it will schedule the “real” tasks around the non-working periods and
  2. it has the option to force assignments on a task to be simultaneous (see how the options fro solving overallocations have to be set in the figure joint).

Converting an existing file through a macro

Convinced about the goodies of this method? If your project already exist, and you want to replace calendar non-working time by fixed task (“Must Start On” constrained) you are faced with a tedious task. I want to alleviate this for you by supplying a free macro that does the trick.

Here’s the code:

How to use the Macro

To install the macro:

You will be requested to enter a date. Non Working days before that date will not be converted into NWT tasks.

At the end of the run you will find three open projects:

More Macros

Jack Dahlgren, another Project MVP, has many more interesting Macros on his site:

Jack Dahlgren's Microsoft Project Tools and Tips

More Information

Do not hesitate to mail for more information on this macro, Resource Levelling, or other Microsoft Project related questions!