最後にプログラムのユーザーインターフェースは極力シンプルであれ!!ユーザー向けにVBAでプログラムを作っていると、プログラムの実行方法をどうすべきかで迷うことがあります。簡単なプログラムだから、リボンにある、マクロの実行ボタンから実行してもらおうか。ショートカットキーを割り当てておこうか。ユーザーフォームを作り込むか。コマンドボタンをシート上に配置するか。リボンにボタンを配置するか・・・。考え付くだけでも色々な実行方法がありますね。私の持論は、「ユーザーインターフェースは極力シンプルに。アプリケーションにもよりますが、作る側としては、なるべく簡単に済ませたいと思うのです。誤解してほしくないのは、ここでいう「簡単」というのは、手を抜くということではありません(そういう側面があることも否定しませんが・・・。作りが簡単ということは、後々の「保守コストを抑える」ことができる、ということもつながります。見た目も簡単かつ、シンプルに保つことがユーザーのためにもなります。楽に、簡単に、シンプルに・・・。インターフェースは極力そうあってほしいと考えています。シンプルに保つといっても、アプリケーションによって、どのようなインターフェースを採用するかを悩むことがある?かと思います(私はよく悩むんです)。今回は、どんなケースでどんなユーザーインターフェースを使ったらいいか、私の持論を書いてみたいと思います。どんなユーザーインターフェースがあるかまず、考えうるユーザーインターフェースとしてどんなものがあるか、挙げてみましょう。私の知っている手法を挙げてみました。インターフェースというか、マクロの実行方法ですね。それを含めてここでは、ユーザーインターフェースとさせていただきます。それぞれについてあくまで私視点のおすすめ度をつけつつ、見ていこうと思います。VBEの再生ボタンで実行VBEの再生ボタンは、上のボタンですね。ユーザーに「これで、自分の好きなプログラムを実行してね~」と言えたらどんなに楽か・・・。それは絶対無理な話ですね。作った本人であれば、それでもいいですが、それは、プログラムの内部、作りをよく知っているからできるわけで・・・。何もわからないユーザーにここから実行させることは、やめた方がよさそうです。<結論>☆☆☆☆☆リボンにあるマクロ実行ボタン表示タブのマクロボタンをクリックすると出てくる、マクロ一覧から実行する方法です。マクロの数は一つか二つくらいだと、これでも十分ですね。作り手は、マクロのアクセス修飾子(Public、Privateなど)だけ気にしていれば一覧に出てくるマクロを制御することができます。プログラムの数が多くなってくると、ユーザーは不便かも知れません。マクロに保護をかけていない状態だと、編集ボタンからユーザーが簡単にソースにアクセスできてしまいます。それによって、予期せずコードを書き換えられてしまうというリスクもあります。少人数や、リテラシーのある人だけで使う分には十分選択肢の一つになると思います。<おすすめ度>★☆☆☆☆ショートカットキーを割り当てる上述の表示タブのマクロボタンのオプションをクリックすると出てくる、マクロオプション。Ctrlキーと何かのキーの組み合わせで登録することができます。ショートカットキーの存在がしっかり周知されていれば、有力な選択肢です。作り手はショートカットキーを登録するだけでいいですし、ユーザーはどのショートカットキーがどのプログラムと結びついているかを知っていればいいだけです。実行するプログラムの数が、一つや二つ程度であれば、こちらも十分に選択肢の一つになり得ます。デメリットとして、プログラムの数が多くなると必然的に割り当てるショートカットキーも多くなりますので、覚えるのが大変だったり、既存のExcelのショートカットキーと重複する可能性が出てきます。この手法だと、マクロがあることが表に出てきません。私が実際に見た例として、作られて時間が経過したExcelブックで、そもそもマクロがあること自体が忘れ去られていた、ということがありました。<おすすめ度>★★☆☆☆コマンドボタンこんな感じのコマンドボタンをワークシート上に設置して、そこにマクロを割り当てる手法です。別にコマンドボタンに限らず、オートシェイプなどにもマクロを割り当てることができます。ユーザーが一目見て、「なんか押したらプログラム起動しそうだな!!」と思える見た目のものに割り当てる方が得策だと思います。昔作られたブックで、変なオートシェイプにマクロが割り当てられてたことがあり、長年気づかれずに掘っておかれてた例を見てきたので・・・。メリットとして、ユーザーが一目でマクロがあるな、とわかる点が挙げられます。他のコントロールを組み合わせることで、ワークシートを一つのメニュー画面のようにに仕立てることができます。この手法は、一つのプログラムだけでなく、複数のプログラムを使うアプリケーションまで幅広く活躍してくれると思います。デメリットとして、ワークシートのどこかに必ず配置する必要がある、という点があります。いうことかと言うと、ワークシートをメニューに見立てているならそのワークシートを、データの上部など特定の場所を設けてそこに配置しているなら、その範囲を陣取っているわけです。常に見える形で常に居座っているわけですね。eachなど)は、邪魔なんです。データの上部にあると、必然的にそこにデータは入れることができません。邪魔なときがあるんです。柔軟性が高く、作り込みも、そこまで必要がないので、ポイント高しです。<おすすめ度>★★★★★ユーザーフォームユーザーフォームという名前らもわかるように、ユーザーインターフェースのためのオブジェクトですね。これを駆使すれば、色々なものができます。アプリケーションによっては、これがすべてという場合もあるくらい。作り込むと、本当にExcel??というようなインターフェースができあがること請け合いです。VBAで作るべき範疇を超えているのでは・・・というのが私の持論です。冒頭にもあるように、ユーザーインターフェースは極力シンプルに!!なので。<おすすめ度>★★★☆☆リボンにオリジナルボタンを配置ちょっとマニアックな手法に分類されるかも知れませんが、Excelのリボンにオリジナルのボタンを配置する、というものがあります。詳しくはこちらのサイト様が参考になります。初心者備忘録この手法のメリットは、ワークシートにボタンがあるわけではないので、全体として、すっきりするということが挙げられます。慣れてしまえば、メンテナンスも簡単なので、私個人的にはおすすめの手法です。ワークシート上にボタンは配置したくない・・・。ユーザーフォームを作り込むまでもない・・・といったときに重宝します。デメリットとしては、慣れるまでが大変ということです。マニアックなので情報が少ない点が挙げられます。<おすすめ度>★★★★☆イベントからキックここからはちょっと番外編っぽいですが・・・。これはちょっと毛色が違いますが、一応取り上げました。ワークシートの変更や、ブックを開くなどのイベントに応じてプログラムを実行する手法です。この最大のメリットは、実行については、ユーザーが意識することがないという点です。デメリットは、使える場面が限られるということでしょうか。PowerShellのような、スクリプト等からVBAを呼び出して実行する手法です。これまたマニアックですが、一応、ひとつの方法であろうということで挙げておきます。VBAのユーザーインターフェースについて、見てきました。どんな形が最良なのかは、本当に求められるアプリケーションによって変わってくるかと思います。作り手として大事なことは、どんな手法をとることができ、それぞれの得手不得手を理解して、上手に提案できることに尽きると思います。作り手の負荷や、将来的な保守コストも見越しつつ、ユーザーが本当に必要としているものを作れる作り手になりたいものですね。ここまでお読みいただき、ありがとうございました。はてなブログProシステム界隈の末端に生息しています。コンピュータに仕事をさせるのが好きです。このブログで紹介している内容は、多分に私見が含まれています。それでも、なるべく正確性を保つよう心がけていますが「それは違うんじゃない?」などのご意見がありましたらご連絡ください。このブログに掲載しているコードは利用規約の範囲で自由にお使いください。当ブログのプライバシーポリシーについてお問合せコードの利用規約にほんブログ村はてなブログをはじめよう!shinmai_papaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。