はじめに

 「仕事に使えるExcelVBA講座」などと銘打っていますが、「本当に使えるのだろうか」とちょっと不安になってしまいます。

 本HPでは、実際に現場で僕自身が作成し、使用しているマクロの作り方をはじめから手順を追って説明します。そしてその手順を追い、いっしょに作成することで、VBAに必要な知識、プログラミング手法などを伝えることができるのではないかと考えています。
  どのようなマクロで紹介しようかいろいろ悩みましたが、僕の作成したマクロの中で雑誌に紹介されたものがあるのでそれを資料として使用することにします。
 それは「ガントチャート」という名前で、スケジュールを管理する一般的なチャート方式のひとつです。プロジェクトと呼べる全ての業務において使用できるスケジュール管理方式なので、完成したら是非自分でそのマクロを使用してみてください。

 このマクロで学べることは

  1. マクロによるシートの基本的な操作方法
  2. フォームの作成と使用方法
  3. オートシェイプを使用した図形の描画

です。

 以上、これから作成作業に入りますが、説明の中にマクロのリファレンス的な内容は必要最小限にとどめてあります。使用方法が難解なもの以外は全てExcel VBAのヘルプを参照してもらいます。Excel VBAのヘルプは標準ではインストールされないので、インストールされていない場合はインストールすることをお勧めします。また、エクセルの操作については標準インストールで、設定変更を一切していない状態をもとに説明します。

 それでは、いっしょに作成していきましょう。

計画

 ある程度大きなマクロになると、初期段階での計画が非常に重要な要素となります。
 そこで、以下の重要な2点について計画を行います。

  1. データ保存形式
  2. チャート表示形式

データ保存形式

 「どこ」に「どのデータ」を「どのような形式」で「どのくらい保存」し、そのデータを「どこ」で「どのように使用するのか」ということをある程度計画しておくことで、スムーズなプログラミングが可能となるのに加え、変更が発生した場合にもどこをどのように直せばよいのかがよくわかります。
 それでは、ガンチャートに必要な最低限のデータを下記に示します。

  1. 項目名称
  2. 予定開始時間
  3. 予定終了時間
  4. 実績開始時間
  5. 実績終了時間

 しかし、これではちょっと物足りないので、これらを分類と担当者も表示できるようにします。そうしたときのデータは、

  1. 項目名称
  2. 分類名称
  3. 担当者
  4. 予定開始時間
  5. 予定終了時間
  6. 実績開始時間
  7. 実績終了時間

となります。

 ここで、もう少しプログラムを高度なものにするためデータの保存形式に手を加えます。
 分類名称内容が重複する可能性が高い(担当者もなのですが、ここでは分類のみを使って説明します)ので、リレーショナルデータベース的な考え方から分類を別に保存し、項目名称と1対1で対応させたデータを作成し、使用することにします。

リレーショナルデータベースについて
 リレーショナルデータベースとはそれぞれのデータに共通するデータ(キー)を用意し、それを使って個々に保存されたデータの関連付けを行うデータベース方式。
  AccessやOracleといったデータベースソフトで採用されています。

 この方法を用いるとデータの形式は次のようになります。

分類

  1. No.
  2. 分類名称

項目

  1. No.
  2. 項目名称
  3. 担当者
  4. 分類番号
  5. 予定開始時間
  6. 予定終了時間
  7. 実績開始時間
  8. 実績終了時間

 ここで、分類と項目のNo.はマクロを簡単にするために、保存されている行番号とします。よって、連番になりますが、一番上をラベルとして使用するのでこの番号は2からはじまる番号となります。

チャート表示形式

 スケジュール管理の表示に必要なものは、まず期間です。いったいどのくらいの期間を表示するのかが決まらなければ、表を作成することなどできないのは当たり前ですね。
 ということで、ここではとてもスタンダードな1ヶ月間のチャートを作成することにします。それから、表示できる項目の数は可変とするのが理想的なのですが、印刷したときの見栄えなどを考慮して、30項目までとします。もちろん、プログラムを作成する人によって増やすことも減らすこともできます。可変にできるのが最良ですが、それはまた後のこととします。

 次に、どのようにしてチャートを描画するのかです。一日単位のスケージュール管理を行うならばセルを塗りつぶすという方法があり、これは非常に簡単です。でも、せっかく解説するのにそれはないでしょうから、オートシェイプの直線を使って分単位のチャートを描画できるものを作成します。

 その他チャートに表示する情報は、保存されたデータにある「分類名称」と「項目名称」、「担当者」とします。

 では、チャートに表示する内容を整理してみると下記のようになります。

  1. 表示期間 1ヶ月
  2. 表示項目の最大数は30項目まで
  3. チャートはオートシェイプを使用して描画
  4. チャートは分類ごとに項目をまとめ、それぞれ項目の名称、担当者を記入

 データに比べて非常に簡単な説明ですが、これはチャートの表示などはいくらでも変更できるためです。僕の経験上、どんなによい表示形式を検討したところで、データがしっかりとしていないと追加、変更などの修正が難しくなり、後で後悔することになることが多いです。

 それでは次のデータに進みましょう。