ユーザーフォーム SetFocus VBA エクセル 検索 (2)

間に合わせて作ったVBAが25日の仕事で役に立ちました。いくつか改良点が必要だったので,改良を加えま
した。やはり,複数検索対応が必要で,アクティブセルを目立たせることも使いやすくするためには必要でし
た。どうしようかと思いましたが,リストボックスと組み合わせることで,懸念だった,検索結果の複数項目
を保持することにしました。

上記のようなユーザーフォームで,検索結果をリストボックスに表示するようにしました。結果が単数の場合
はそのまま選択し,複数の場合は,リストボックスで選択するようにしました。
前回・今回のプロシャージャで,使ったのが,Find(keyWord, LookAt:=xlPart) というものですが,これ
は,最初にでてきたものしかヒットしません。前回のプロシャージャでは,FindNext(myCell)との組み合わせ
で,あらかじめ複数検索の対象を把握しておいて,複数検索の対象の場合は,別な検索キーで検索するとい
う,手間をかけてました。リストボックを使うことで,検索結果を全部リストボックスに表示することで,プ
ログラム的にはすっきりしました。検索結果が単数の場合は,リストボックスに表示する必要なないのです
が,複数か単数かの判別をする必要が面倒なので,一律リストボックスに表示して,

複数→選択(手動),単数→プログラムで選択

のようにしました。便利な命令があるのもので,今回のプロシャージャ作成で初めて使いましたが,

sendkeys

というもので,キーボードを押した状態をプログラムで作ることができるものです。今回初めてわかりました
が,もし,以前から分かっていたら,以前作ったプロシャージャももっと楽に作れたかもしれないと思います。
次のような動作をします。ここで使ってる名前は,データ用の架空の名前です。

名前を入力して,リターンキーを押すと,検索結果がリストボックスに表示されると同時に,選択されたセル
が見えるようになります。名前のとなりの数字は,その名前ある行番号です。

ここで矢印キーで選択する項目を移動すると,それにつれて,選択状態になったセルが見えるようになりま
す。選択してリターンキーを押すと,該当する名前のセルが選ばれ,背景が黄色になります。

単数の場合は,リストボックスに表示するのですが,表示と同時にリターンキーを送るので,リストボックは
見えず選択されたなまえの背景が黄色になります。文字の背景をその都度変えているのは,どの項目がアク
ティブになるかの表示でデバック用も兼ねてます。

合わせて,上記のように,アクティブセルの色を変えて,他のセルと区別できるようにしてます。次回,操作
の様子と全プロシャージャを掲載します。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA