
独自メニューを追加すると何が嬉しいのか? どのようなものか? の概要を解説いたします。
メニューを追加する場所である「コマンドバーコントロール」の全体構造を解説いたします。
独自メニューを自在に追加するには欠かせない知識です。
肩慣らしにコマンドバーコレクションとコマンドバーを操作する方法を学びましょう。
肩慣らしその2。コマンドバーとコントロールを操作する方法を学びましょう。
主要なコマンドバー(セル右クリックメニュー・行右クリックメニュー・列右クリックメニュー・シートタブ右クリックメニュー)にどんなコントロール(ボタン)があるのか確認します。
コマンドバーを追加操作を繰り返すと追加した独自メニューがどんどん増えていき混乱します。
無用な混乱を避けるためにまずはコマンドバーをリセットする方法を学びましょう。
セルの右クリックメニューにボタンを追加する方法を学びましょう。
追加した独自メニューが実際に動くようにするためにマクロを登録します。
OnActionプロパティに設定します。
コントロールのFaceIDプロパティを設定してメニューボタンにアイコンを表示させる方法を学びます。
サブメニューのあるボタンの作り方を解説いたします。
リボンに独自メニューを追加する方法を解説いたします。
標準的なコマンドバーであるWorksheet Menu Barに追加します。
リボンにFaceID一覧表示機能を作るために独自コマンドバーを追加する方法を学びましょう。
Worksheet Menu BarにFaceIDをずらっと並べる方法を解説します。
FaceIDアイコンをクリックしたらID番号をクリップボードに格納する機能を実装します。
DataObjectクラスを使います。
Worksheet Menu BarにFaceID一覧を表示させると使い勝手が悪いので独自コマンドバーに表示させる方法を学びましょう。
CommandBars("Cell")でメニューが追加されるのは「標準ビュー」の右クリックメニューです。
改ページプレビューにメニューを追加したい場合はどうすればよいか? を解説いたします。
重い処理を走らせるとエクセルが固まることがあります。ステータスバーに進捗状況を表示し「固まっているけどきちんと動いている」ことを伝えて不安を解消させましょう。
どのPC、ユーザーが実行したか? のログを残すためのEnviron関数の使い方を解説いたします。
便利な「リンク図」ですが、VBAの実行速度が極度に遅くなるバグ(?) が潜んでいます。どのくらい遅くなるのか検証します。
高速化のためにはリンク図(Shapeオブジェクト)をVBAで操作する必要があります。
どのように取得するのか解説いたします。
開いているブックに存在するリンク図をすべて配列に格納し、まとめて操作する方法を解説いたします。
配列に格納したリンク図のリンクをすべてオフにし、用が済んだら再度リンクさせるプロシージャを作ります。
リンクオンオフ関数は3行必要になりますが、クラスモジュールにすれば1行でオンオフできるようになります。
どう実装するのか解説いたします。
ユーザーの操作(イベント)に応じて動くプロシージャをイベントプロシージャといいます。
どんなものがあり、どう使うのか大まかに解説いたします。
イベントプロシージャ実装の手順とブックアクティブ時/非アクティブ時、セル選択時のイベントを実装してみます。
セル変更時のイベントを実装してみます。
セル変更時イベントは注意点がいくつかありますので併せて解説いたします。
イベント監視を制御するためのプロパティの使い方や注意点を解説いたします。
エクセルVBAで扱えるイベントプロシージャにはどんなものがあるのかを調べる方法を解説いたします。
イベントプロシージャ利用時の注意点
イベント監視をオフにしているときにエラーになるときの注意点
ファイルを開いたときイベントで無限ループしてしまうときの対処法
を解説いたします。
シートやブックによって使える独自メニューを切り替えたいことがよくあります。
コース前半で学習したメニュー追加とイベントプロシージャを組み合わせましょう。
知らなくても問題ない知識ではありませんが、シート(ブック)モジュールと標準モジュール、一般的なクラスモジュールの機能の違い、クラスモジュールをNewせずに使える方法をお伝えします。
豆知識としてどうぞ。
印刷前におかしなところがないかチェックしておかしかったら保存をキャンセルする機能を作ります
取引先などにファイルを送る前に全シートのアクティブセルをA1にしておく機能を作ります
セル編集イベントでデータベースソフトのような機能を実装します
商品コード(重複の無い値)を自動的に発行する
商品コード・商品名に重複がないかチェック
商品コードに数値以外を入力できないようにする
をお題にセル編集イベントを扱うときの考え方を身につけましょう
まずは簡単な「型チェック」から実装します
WorksheetfunctionのCountIf関数を使って重複チェックを行います。
WorksheetfunctionのMax関数を使って商品コード列の最大値+1で商品コードを自動採番します
「コンテンツの有効化」ボタンを押さないとせっかく作ったイベントプロシージャが動かず、開発者であるあなたの意図通りにシステムが動きません。
ボタンを押すことなくマクロを有効にする方法を解説します。
この講座を受講することであなたの作るマクロはさらに使い勝手の良いものになります。
例えば
ボタンを押さずに特定のイベント(セルを編集・あるシートがアクティブになったとき)時にマクロを自動実行できる
右クリックメニューやリボンメニューに独自のメニューボタンを追加できる
ステータスバーにプログラム進捗状況を表示してエクセルが固まっていないか? とユーザーを不安にさせないように
OSの環境変数を利用してログファイルなどに活用する
「リンクされた図でマクロが激遅くなる問題」を局所的に解決できるようになります
社内ファイルサーバーのxlsmファイルを自動的に「コンテンツの有効化」する
方法を学べます。
上記のテクニックを学ぶことでユーザーは
マクロ実行のためにいちいちボタンを押さなくても良くなります
右クリックメニューやリボンメニューというボタンより身近なところからマクロを実行できるようになります
マクロ開発者であるあなたの評価を上げるでしょう
開発者であるあなたは
マクロ実行ボタンに関する様々な面倒ごとから解放
「コンテンツの有効化」ボタンが押されずにマクロがちゃんと動かない問題が解決
誰がいつマクロを実行したか後追いできるようになり管理運用しやすく
なります。
例えばマクロ実行ボタンの面倒ごとには
操作を誤ってボタンを消してしまい開発者であるあなたに問合せが来る
他のファイルにシートごとコピーしたときに「外部リンクが〜」というメッセージか出てきてうっとうしい
マクロを実行して欲しいタイミングでホタンが押されず業務がちゃんと回らない
というものがあります。すべて経験しました。こうした面倒ごとを解決するために使ったのがこの講座で取り扱う「独自メニュー追加」と「イベントプロシージャ」です。
ユーザーもいちいちボタンを押さなくてもよくなりますし、xlsmファイルを開いたときの「コンテンツの有効化」ボタンを押さなくてもよくなります。
また、マクロ実行をボタンでなく右クリックメニューやリボンメニューにすることでより使い慣れたインターフェースで仕事ができ、使い勝手がよくなります。
よって開発者であるあなたに対する評価が上がるでしょう。
その他、この講座では
VBAからクリップボードに文字列を送る方法
メニューボタンに使えるアイコンをリボンに一覧表示してメニューボタンを開発しやすくする方法
With Newでインスタンス化して変数宣言なしにオブジェクトを使う方法
リンクされた図(Shapeオブジェクト)を配列に格納して一気に処理する方法
OSの環境変数(PC名やユーザー名など)をログファイルに出力しマクロの運用・管理に使う方法
を扱います。
これから一緒にユーザーが使いやすいエクセルにする方法を学んでいきましょう!