サンプル

法律事務所のタスクを管理(エクセルVBA)



事件データベースができて次にやりたくなるのは、タスクの管理ではないでしょうか?

事件ごとに何を誰がいつまでにやらなければならないのか、そしていつ完了したのかを明確にして、事件に関わる業務の進捗状況を把握できるようにしたいですね。

それでは、すでに出来上がっている事件データベースを利用して、それぞれの事件のタスクを管理できるようにしてみましょう。

事件データベースにタスクを管理するためのシートを追加すれば良いのですよね。

それでも良いのですが、不具合があった場合のリスクを軽減するため、事件データベースとは別のファイルでタスクを管理するようにしてみました。

ダウンロード

まずは、サンプル・ファイルをダウンロードしてください。

使用方法

  • 「オプション」シートを開いて、「事件データファイル」のセルに「事件データベース」のパスを入力してください。
  • 「オプション」シートの「コマンド」の「事件データベースの読込」の「実行」をダブルクリックすると「事件データベース」のデータが「事件」シートに読み込まれます。また、「タスク」シートに事件が読み込まれます。
  • 「タスク」シートを開いて、「事件番号」をダブルクリックすると新規タスクを入力できるようになります。
  • 「現況区分」、「事件区分」、「担当区分」および「事件呼名」は、「事件番号」に応じて自動入力されます(上の行と同じ場合には、表示させないようにしています)。
  • 「担当」は、リストから選択して入力します。リストの項目は「オプション」シートで設定します。
  • 「期限」および「完了」は、ダブルクリックするとカレンダー入力ができるようになっています(日付を省略して「済」を入力できるようにもしてあります)。

細部については、「マニュアル」シートを参照してください。

ブックとワークシートの構成

ブックの構成

「タスク管理システム」のブックは、4つのシートで構成されています。

  • 「タスク」シート
  • 「事件」シート
  • 「オプション」シート
  • 「マニュアル」シート

「タスク」シートの構成

「タスク」シートには、タスクでーたの入力および表示を行う「タスク」テーブルが配置されています。

「タスク」シート

テーブルを使う理由については、こちの記事を御覧ください。

テーブルの作成方法については、こちらの記事を参考にしてください。

テーブルには、左から「事件番号」、「現況区分」、「事件区分」、「担当区分」および「事件呼名」の事件を特定・分類するための項目(フィールド)に続き、タスクに関する情報を入力する「タスク」、「担当」、「期限」および「完了」列が設けられています。

「事件」シートの構成

「事件」シートには、「事件データベース」のデータを表示する「事件」テーブルが配置されています。

「事件」シート

「オプション」シートの「事件データベースの読込」を実行すると、事件データベースのデータで更新されるようになっています。タスク管理に必要なのは、「現況区分」、「事件区分」、「担当区分」および「事件呼名」の項目だけですが、他のデータも参照できるようにするため、すべてのデータを読み込んでいます。

「オプション」シートの構成

「オプション」シートでは、タスクテーブルのリストに表示される項目の設定や事件テーブルの読込の実行を行うことができます。

「オプション」シート

「マニュアル」シートの構成

「マニュアル」シートには、このブックの使用法と変更履歴を記載しています。

「マニュアル」シート

マクロの構成

VBEへの入力位置

「開発」-「Visual Basic」をクリックして、VBE(ビジュアル・ベーシック・エディタ)を起動してください。

ビジュアル・ベーシック・エディタ

各シートを操作するコードは、シートモジュールに記載しています。標準モジュールには、各シートに共通するコードだけを記載しています。

プロジェクトの構成

「タスク管理システム」のプロジェクトは、次のように構成されています。

プロジェクトの構成

このプロジェクトのマクロは、すべてイベントプロシージャにより実行されます。

「Sheet11(タスク)」 モジュールの機能

「Workseet_Activate」プロシージャ は、「事件」シートで選択されている行の事件番号と同一の事件番号の行を選択します。

「Workseet_Selection」プロシージャ は、現在選択されている行の事件番号を変数に記録し、「事件」シートが開かれた際に同一の事件番号の行を選択できるようにします。

「Worksheet_BeforeDoubleClick」プロシージャ は、セルがダブルクリックされた際の列に応じて、次の処理を行います。
・「タスク」列:同一事件番号の最終行の下に新しい行を追加し、「FormatTable」プロシージャを起動して書式の再設定を行います。
・「期限」および「完了」列:「CalendarForm」を起動して、カレンダーフォームを表示します。

「UpdateTable」は、「オプション」シートの「データの読込」を実行すると起動され、「AddNewCase」、「SortTable」および「FormatTable」プロシージャを起動して、新規事件項目を追加し、テーブルの並び替えおよび書式設定を行います。

「AddNewCase」プロシージャは、新規事件項目の追加、 「SortTable」プロシージャ はテーブルの並び替え、「FormatTable」プロシージャ はテーブルの書式設定を行います。

「CalendarForm」モジュールの機能

日付のカレンダー入力を行います。

「Sheet21(事件)」モジュールの機能

「Workseet_Activate」プロシージャ は、「タスク」シートで選択されている行の事件番号と同一の事件番号の行を選択します。

「Workseet_Selection」プロシージャ は、現在選択されている行の事件番号を変数に記録し、「タスク」シートが開かれた際に同一の事件番号の行を選択できるようにします。

「ImportData」プロシージャ は、 「オプション」シートの「データの読込」を実行すると起動され、「SortTable」および「FormatTable」プロシージャを起動して、テーブルの並び替えおよび書式設定を行います。

「SortTable」プロシージャ はテーブルの並び替え、「FormatTable」プロシージャ はテーブルの書式設定を行います。

「Sheet91(オプション)」モジュールの機能

「Workseet_BeforeDoubleClick」プロシージャは、「並び替え」の「実行」がダブルクリックされた場合に「Sheet21(事件)」の「ImportData」プロシージャおよび 「Sheet11(リスト)」の「UpdateTable」 を実行します。

「SortAndFormat」プロシージャは、「Sheet11(事件)」の「SortTable」、「FormatTable」、「CheckTable」の各プロシージャを起動し、「事件」テーブルの並び替え、書式設定およびデータチェックを行います。

「Module1」モジュール(標準モジュール)の機能

「DsblEvents」および「EnblEvents」プロシージャは、各プロシージャの実行前にイベントの抑止と速度向上のための処理を行います。

VBAのコード記述手法

変数の命名には、ハンガリアン法を用いています。

また、ワークシート関数をできるだけ使用するようにしています。

テーブル機能が使われているので、ワークシートのセルは構造化参照で特定しています。
構造化参照の細部については、こちらのサイトを参考にしてください。

また、テーブル以外のセルには名前を付けて特定しています。

プロシージャ内のコードの細部については、サンプルファイルのプログラムにコメントで記載していますので、そちらを御覧ください。

コメント

タイトルとURLをコピーしました