こんにちは、とらと申します。
今回は、ExcelのVBAを使っていく上で、一つの特徴的な機能であるユーザーフォームについての雑談です。
ユーザーフォームの利点や使用例の紹介などもできたらと思いますので、もしよろしければお付き合いください。
ユーザーフォームってなに?
まずはあまり馴染みのない方向けに、ざっくりとユーザーフォームのご紹介です。
ユーザーフォームは、ExcelのVBA(マクロ)の機能の一部で、自分の好きなように操作用のウインドウを作れるものです。
すると、こちらに無地のウインドウが表示されますので、ここにいろいろなオブジェクトを設置していきます。
例えばこんな感じで作成してみました。
検索用のテキストボックスや検索条件のような☑を追加しています。
これらの設置したオブジェクトに様々なマクロを組むことで、自分の意図したいわゆるUI(ユーザーインターフェース:サービスを利用するための窓口)のようなものが出来上がっていきます。
ユーザーフォームって難しいの?
さて、このユーザーフォームですが、Excelマクロを活用され始めた方の一つの大きめのハードルとなっている印象です。
マクロ入門用の書籍などでは、触れられないものもあったりするのではないでしょうか。
自動入力するマクロを組んだ、情報取集をするボタンを作った、定期的に作動する機能を設計した・・・といった具合に、順調にマクロを習得されていく方でも、ユーザーフォームはいまいち使ったことがない、という方も周りに何人かいらっしゃいます。
なぜでしょう?
作るのが難しいのでしょうか?
いえ、やることはマクロのボタンを設計するのと同じで、それをウインドウ上に設置していくだけの作業です。
でも意外と手が出ない。
そんな話をしている私も、ユーザーフォームに触れたのは、マクロをストレスなく組み上げられるようになってからしばらく経ってからでした。
なぜでしょう?
ユーザーフォームの設計とは
先ほど、ユーザーフォームはUI(ユーザーインターフェース)のようなものと書きました。
これは正確に言うとちょっとズレています。というのも、Excelのウインドウそのものが、すでにUIだからです。
UIは「サービスを利用する上での窓口」と書きましたが、例えばExcelという表計算ソフトの機能を使用する上では、普段から目にするセルが並んだあの画面がその窓口になります。そのため、ユーザーフォームで作った自分のウインドウはあくまで後から追加されたUIでしかありません。
回りくどくなってしまいました。
つまるところ、Excelの機能を使用するためだけであれば、もともと非常に優秀なUIが組まれているのです。
なので、わざわざユーザーフォームを使用して、自分で設計したUIを後付けする必要性がそもそも薄いのです。
マイクロソフトさんの設計されたUIを超える便利さを持ったユーザーフォーム、作れればよいのですが、私にはちょっと自信がありません。
そうなると、Excelを使用する上でユーザーフォームは、なかなか必要にはならず、そのため使えないのではなく、使う必要がない、というが現実だと思われます。
ユーザーフォームの楽しさ
では、ユーザーフォームの設計にはなんの旨味もないのでしょうか?
そんなことはありません。
例えば、先ほど例で作成したユーザーフォームをもう一度見てみましょう。
検索条件が書かれた☑ボックスと、検索用のテキストボックスが設置してあります。
なんとなく、☑を入れた検索条件のデータを検索してくれそうな雰囲気がありますでしょうか。
これを、通常のExcel上で実行しようとすると、どんな操作が必要でしょうか?
「Ctrl+F」キーを押して検索ボックスを表示させ、検索ワードを入力し、書式やオプションで検索条件を設定して、検索ボタンでしょうか。
もしくは、検索条件に該当する列をまるごと選択して検索でしょうか。
どちらも全然問題のない操作です、Excelにデータを蓄積させて使用する上での必須ともいえるテクニックの一つでしょう。
でも、例えばこれを毎日のように検索し、検索した条件ごとにプリントアウトして、紙で記録を残していく・・・といった条件が加わった時、さすがにこの検索方法も面倒になってきませんでしょうか?
マクロを設計できる方であれば、それなら、決まった条件でフィルターをかけるマクロボタンを設計したら解決するじゃん、という方もいらっしゃるかもしれません。
でも、条件の組み合わせが毎回異なっていたりした場合、それらをすべてに適合するマクロボタンを作るのは結構大変ですよね(もちろん、根気があればなんのそので、一度作ればずっと使えるならば、作る価値は全然ありです)。
こんな風に、自分の使用する環境に合わせて、普段からExcelをもっと便利にしたいとき。
そういった発想を具体化しやすいのが、ユーザーフォームです。
自分の使用環境をもっと便利にできると思えば、意外と欲しいユーザーフォームが思いついたりするのではないでしょうか。
他にもユーザーフォームの良いところ
さて、ここまで実にユーザーフォームが良いもののように話しておりましたが、実は先ほどのレベルの検索ウインドウは、ユーザーフォームが無くても、Excelの表画面でチェックボックスとマクロボタンを設置するだけでも再現可能です。
検索文字列を入力するセルと、条件フラグになるチェックボックスが連動するセルを用意すれば同じことができます。
そうです、ユーザーフォームで出来ることは、あくまでExcelの表上でもできることでしかありません。
なぜなら、Excelの表上でも同じようにボタンを設置し、チェックボックスを設置し、ウインドウと同じような環境を設計できるからです。
では、ユーザーフォームで設計することに、やっぱり意味はないのでしょうか?
そんなことはありません。
また先ほどのウインドウ画面に戻りますが、下に先ほどのウインドウ画面と、上述したセル上で同じことを再現した画面を設置してみました。見比べてみると、いかがでしょうか?
ウインドウ画面の方が、なんとなく何をすれば良いか、わかりやすくはないでしょうか?
また、セルではなく、ウインドウ内で操作をしないといけないような気分になりませんか?
見る範囲が限定される、背景がグレーで見るべきところが強調される、ウインドウが表より手前に浮き上がって見えている、など理由は様々ですが、要するに「直感的にわかりやすい」「誰が使っても間違えにくい」「操作にストレスがない」といった「使いやすさ」につながる部分が、ユーザーフォーム、ひいてはUIの醍醐味だと考えます。
他にも、Excelに入力されたデータは触らせたくない時なども、シートに保護をかけた上でユーザーフォームを利用すると解決することができますので、自分以外にも不特定多数が利用するファイルを作成するときなどには、さらに重宝するかもしれません。
まとめ
以上、ここまでユーザーフォームのメリットについて、つらつらと述べてみました。
Excelのマクロ(VBA)はプログラミングの一種であり、慣れればできることは格段に増えていきます。
しかも、今やAIがプログラミングを代わりに作成してくれるような時代です。
そのため、ある程度のシステムならAIにまかせれば難なく組めてしまいます。
そういった中でもし自分に合わせた、あるいは周囲と共有して使用したいプログラムを作成するときに考えるべきことは、AIを使いながら、いかに人が使いやすいUIを作るか、といったことになってくるのではないかと存じます。
あらゆるアプリケーションや機械にとって欠かせないUI、その入門のようなExcelのユーザーフォームです。
もしマクロを多用されている方でしたら、試しに作成してみるのも一興かもしれません。
もちろん、専門の方が多くの知見に基づいて作成されたアプリケーションに勝るものはなかなか難しいものがありますが、自分の身近な作業に密接に関わるプログラムであれば、きっとお役に立ってくれるかと存じます。
それでは、今回はこの辺りで。
コメント