Microsoft Projectでタスクを誰かに割り当てたとき、担当者ごとに違う色をタスクのバーに割り当てると見やすくなるのでよくやります。しかし、自動でリソース名とバーの色を連動させる機能がないので、いちいち設定を変えねばなりません。これが結構面倒なので、リソース名を変更するとタスクのバーの色を事前に決めた色に自動的に変えるマクロを作ってみました。
※今回は画像中心でお伝えしていきます。
今回のサンプルは下記の3人のリソースを割り当てたとき、自動的にバーの色を割り当てるマクロを作ります。
まず、クラスモジュールを作成します。
イベントを受け取るモジュールなので、今回はEventClassModuleと名付けます。
まずは、このクラスモジュールを編集していきます。
下図のように宣言し、
Editorウィンドウの左側のプルダウンメニューから「App」を選択すると、
下図のように勝手に関数が追加されますが、これは使いません。
右のプルダウンメニューから、「ProjectBeforeChange」を選択すると、下図のように関数の雛形が追加されます。最初に勝手に追加された、「App_NewProject」は使用しないので削除します。
まずは、このイベントハンドラがちゃんとリソースを変更したときのイベントが取得できるか確認するために、MsgBox()関数を埋め込んで動かしてみます。しかし、まだこれだけではイベントを受け取れません。
Projectのコードを開き、
左側のプルダウンメニューから「Project」を選択し、
Open()を追加し、
下図のコードを追加します。
これでようやく、イベントを拾えるようになります。
リソースを変更すると、メッセージが表示できるようになりました。
メッセージを表示するのはこれで問題ありませんが、クラスモジュールからはバーの色を直接変えることはできないので、グローバル変数経由で変更のあったタスクがどれかをThisProjectに伝えます。ThisProject側にグローバル変数「msgStr」を宣言しておき、これにタスクIDを入れます。
ThisProject側では、タスクの変更を検出するChange()関数を挿入しておきます。
次に、各タスクをどのような色に変えるのか、調べておきます。
バーの設定ダイアログを開き、
「色」項目のポップアップメニューで「その他の色」を選択すると、RGBそれぞれの値を知ることができるので、メモっておきます。
先程追加したChange()関数で、下記のようにリソース名とバー色の関係を記述します。
これで、下図のようにリソース名を変更すると、
リソースのバー色に変更されるようになりました。
メデタシメデタシ。