データの入力を楽にする、モードレスなUserForm

 まず最初に見てゆくのは、営業社員による日々のデータ入力作業です。どんなアプリケーションでも、データがないことには分析を始めることはできません。しかし、入力作業はパソコンに慣れていない人にとってはかなり苦痛のともなう作業だといえます。こんな時はExcel 2000から採用されたモードレスなユーザーフォームを使用することで、劇的な作業効率のアップが期待できます。
 Excel 97以前のバージョンにもユーザーフォームは用意されていました。アプリケーションの開発者は、より正確なデータを間違いなく、そして簡単に記入してもらうために、顧客名や商品名などを選択する独自のユーザーフォームを作成し、使用していたことと思います。しかし、今までのExcelでは、一旦ひとつのユーザーフォームを表示してしまうと、アプリケーション内の他の部分を使用する際には基本的にそのユーザーフォームを閉じなければいけない、いわゆる「モーダル」と呼ばれる状態でしか表示できませんでした。このため、フォームを表示した後にセル内のデータの変更をしたいような場合、一度フォームを閉じるか、もしくはセルの選択から変更までをすべてVBAで制御するしかなく、せっかくExcel本来がもつデータのコピー&ペーストやオートフィルの機能といった、直感的な操作による入力というものが損なわれていました。また、複数のユーザーフォームを同時に表示して自由に切り替えながら使用する、といった使い方もできませんでした。
 この点を改善したものがExcel 2000から採用されたモードレスなユーザーフォームです。この機能を使うとユーザーフォームを表示しながらアプリケーションの他の部分の操作を行なうことができるモードレスな状態になります。ユーザーフォームを表示したまま選択しているセルの範囲や内容を変更したり、2つ以上のフォームを同時に表示して切り替えながら使用する、といったことが可能となり、非常にスムーズに入力作業を行なうことができます。また、複数フォームの切り替えができなかったために、今までひとつのフォームに押し込めていたボタンやリストボックスなどを複数の細かなフォームに分割して、必要なモノだけを選択して使用する、といった利用方法も考えられます。さらに、ひとつひとつのフォームが独立したものとなっているために、図2のように自分の見やすい位置に個々のフォームを置いて作業を進めることもできるようになりました。

図2:モードレスフォーム表示によるフレキシブルなフォーム使用例

 ユーザーフォームをモードレスで表示するには、

UserForm1.Show vbModeless
と従来どおりの「Showメソッド」に、引数vbModelessを付け加えるだけでOKです。
 データの入力場面においてモードレスなユーザーフォームを使用することにより、今まで抱えていた「ワークシート入力を取るか、ユーザーフォームによる入力を取るか」といった悩みを双方の利点を生かして一気に解決することができるのです。エンドユーザーにとっては、必要なデータをより直感的に、よりラクに入力するために大変有効なものとなり、開発者にとっては、より正確なデータを入力してもらうために大変重宝する機能だと言えます。