選択セルに追随するオートシェイプ

耐性数値の表示を実装し、早速色々と見ているのですが、一つ問題が。「こころセットの表示と離れすぎていていて、どのこころセットを選択しているのかわからない!

右の耐性を選択しているのですが、左を見ても、どのこころセットかわからない

そんな時に役立つのがワークシートのチェンジイベントとオートシェイプ。オートシェイプで作成した「塗りつぶし無色の赤色枠(以下赤色枠シェイプ)」を、選択セル変更に追随して際立たせたいセル位置に表示させればよいのです。

早速実装してみます。コードを書く場所は、いつものモジュールではなく、シート上のイベントをフックできるワークシートモジュールであることに注意が必要です。

Targetには、選択したセルがRange型で格納されます。その位置であるTopプロパティを使って、赤色枠シェイプの位置を指定することで、選択したセルに追随して赤色枠シェイプが表示されます。こころのステータスを選択している時だけ、この赤枠色シェイプが表示されるよう、Visibleプロパティも指定します。このコードではコメントカットしていますが、赤色枠のWidthプロパティを指定することで、任意の位置まで赤色枠を右に伸ばすことも簡単に行えます。

冒頭の赤色枠の存在有無判定処理、当該シートは、「戻る」と入力されたセルのハイパーリンクで別のシートに飛ぶように設定されていて、その対策です。ハイパーリンクで別シートに飛ぶ際、当該セルが選択されて、Chengeイベントが走りますが、ハイパーリンクによる別シート選択が先に実行されるため、飛んだ先のシートに、赤色枠がない場合エラーが発生してしまいます。そこで、事前に、現在選択されているシートに「赤色枠があるか」を判定して、ない場合は抜けるという処理です。

想定しているシェイプのNameプロパティを取得し、それが取得できなければ、そのシェイプは存在していないと判断、処理を抜けます。存在していないシェイプの名前を取得する処理でのエラーに備え、

エラー発生時でも処理が続行するようにしていますが、エラーが想定される処理コードの直後にこれを入れて、以降のプログラムが正常に動作するようにしています。

さて、どんな感じになったでしょうか。

右の選択したセルに応じて、左に赤色枠表示が追随表示される

おお、これで、どのセットを選択しているか、一目でわかるようになりました。

コメント

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