Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : 指定なし)
全シート検索VBA作成の情報をお願いします。
投稿日時: 21/04/17 22:44:20
投稿者: Olive green7

エクセルのシートが大量になったのでエクセルの検索機能の必要な検索機能だけのVBAが出来ないかと考えています。
ネットを色々検索し情報を集めましたが中々思い通りにないりませんでした。
参考になるHPがあれば情報をお願いしたいと希望しています。
 
概要としては
シート「検索」のセル「B2」の値を全シートに検索。
ヒットした検索結果を同シートのセル「B4」を先頭にB5、B6、B7・・・とハイパーリンクで書き出す。
検索結果から希望の結果のハイパーリンクをクリックすると対象のセルへ移動する。
 
よろしくお願い致します。

回答
投稿日時: 21/04/18 06:52:01
投稿者: simple

お望みのものは既に製品中に実装されていますよ。
「検索」ダイアログにある、「すべて検索」というのがそれです。
「検索場所」を「ブック」とすれば、すべてのシートを検索します。
試してみて下さい。
 
・ヒットしたセルの位置や値が一覧できるほか、リンク機能も付いています。
・複数のシートでマッチする場合は、一覧表を表示したまま、
  ダイアログボックスからジャンプできるので、特に便利です。
 
もしマクロの途中で実行するので、ということなら、
Application.SendKeys "^f", True
を実行すれば、検索ダイアログが出ます。
あとは手動でジャンプしたりすることになりますから、
そこはマクロ化不要ですし、できないでしょう。

回答
投稿日時: 21/04/18 07:35:21
投稿者: simple

追記です。
 
(1)既定のダイアログボックスを使うなら、検索は、

    Application.Dialogs(xlDialogFormulaFind).Show
ですが、それには残念ながら「すべて検索」はないですね。
(2)「すべて検索」はマクロ記録されません。
(3)
Application.SendKeys "^f", True
を始め、検索系の処理に関して、
色々なオプションは、前回の検索の際の設定を引き継ぎますから注意が必要です。
"検索場所"とか、"部分一致と完全一致の選択"など(その他にもあります)です。
一回変更すれば、あとはそれを引き継いでくれます。
(ご存じだと思いますが念のため)
 
【余談】
既にある機能を一から作ることを、「車輪の再発明」("reinventing the wheel")
などと呼ぶことがあります。
「広く受け入れられ確立されている技術や解決法を(知らずに、または意図的に
無視して)再び一から作ること」です。普通は避けるべきこととされています。
 
なお、「車輪の再発明」をしたうえに、既存のものよりも役に立たないものを
作ってしまうことを、"reinventing the square wheel"というんだそうです。
(今回、Wikipediaで初めて知りました)
こうならないようにしたいものですね。

投稿日時: 21/04/19 22:17:10
投稿者: Olive green7

早速の連絡、早朝よりありがとうございました。
「車輪の再発明」初めて聞きました。
私が考えている事はまったくその通りですね。
少しでも早く検索したいと思ってましたが・・・。
既存のものを使うように考えます。
ありがとうございました。