- ベストアンサー
Excelのマクロ機能
Excelのマクロ機能で、検索機能を加えたいのですが、どのようにしたら良いのでしょうか??[Ctrl]+[F]ではなく、Yahooやgooのような検索機能です。 検索機能付きのサンプルExcelファイルなどありませんでしょうか??
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
こんばんわ。お返事が遅くなりまして申し訳ございません。 貴方様のお望みになっていることは、サンプルマクロという形で簡単に提供できるものではありません。勿論お望みどおりのプログラムを作ることはできます。貴方様に作ったファイルを渡す方法があれば可能なのですが、ここのサイトでは、貴方様と個人的に連絡を取り合うことができないので、無理なのです。貴方様がVBAのことをご存知なのであれば別なのですが・・・。 ということで、ここでご紹介できるのは、私が書いたマクロで動作させることがせいぜいです。 どうしてもそのようなシステムが必要なのであれば、有料になりますが、プログラムを作ってもらうことは可能かと思います。お探しになってみてはいかがでしょう。ただし、費用が何十万というように高額になると思いますが・・・。 ともあれ、貴方様と個人的に連絡をする方法がない以上、貴方様の思い通りの動作をするプログラミングは不可能であると言えます。
その他の回答 (7)
- kazuhiko5681
- ベストアンサー率49% (79/159)
こんにちは。修正マクロを組んでみました。次のように操作してみて下さい。 1新規ブックを開き、ALT+F11キーを押してVBE画面を表示する。 2.画面左上にあるVBEProjectと書いてある下のTisWorkbookをダブルクリックし、右側の白い部分に下記のコードをコピー・ペーストする。 Sub Kensaku() Dim myRange As Range Set myRange = Range("B3:" & Range("B2").CurrentRegion.SpecialCells(xlCellTypeLastCell).Address).Find(Range("B2").Value, after:=Range("B3"), LookIn:=xlValues, LookAt:=xlWhole) MsgBox myRange.Address MsgBox myRange.Value If myRange Is Nothing Then MsgBox "入力されたデータはこのシートに存在しません。", vbOKOnly + vbCritical, "入 力 エ ラ ー" Else myRange.Select End If End Sub 3.This Workbookの上にあるSheet1にカーソルを合わせてダブルクリックし、右側の白い部分に下記のコードをコピー・ペーストする。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$B$2" Then Call ThisWorkbook.Kensaku End Sub 4.挿入してあるシートの枚数分Sheet~をダブルクリックして3の操作を繰り返す。 >例えば、「日本語」というデータに、「日本」というキーワードで引っかかるように。 この件につきましては、実行することはできると思いますが、今すぐにと言われますとパッと操作方法を思いつきません。少し時間をいただければ何とか動作するように考えてみたいと思います。ご希望の節はお知らせ下さい。
- kazuhiko5681
- ベストアンサー率49% (79/159)
こんばんわ。早速マクロを作ってみました。次のように操作してみて下さい。 1新規ブックを開き、ALT+F11キーを押してVBE画面を表示する。 2.画面左上にあるVBEProjectと書いてある下のTisWorkbookをダブルクリックし、右側の白い部分に下記のコードをコピー・ペーストする。 3.再びALT+F11キーを押してエクセルの画面にもどる 4.ALT+F8キーを押してマクロダイアログボックスを表示させ、左の白い部分の中のThisWorkbook.Kensakuを選択し、右のオプションをクリックして、カーソルが点滅しているところに小文字でeと入力し、OKボタンをクリックする。その後×ボタンでマクロダイアログボックスを閉じる。 B列からM列まできちんとデータを入力し、B2に検索キーワードを入力後確定してCTR+eキーを押してみて下さい。 あなた様のおやりになりたいことが実現しているはずです。 もし不具合がありましたらご遠慮なくお知らせ下さい。修正させていただきます。 Sub Kensaku() Dim myRange As Range Set myRange = Range("B3:" & Cells(Rows.Count, 12).End(xlUp).Address).Find(Range("B2").Value, LookAt:=xlWhole) If myRange Is Nothing Then MsgBox "入力されたデータはこのシートに存在しません。", vbOKOnly + vbCritical, "入 力 エ ラ ー" Else myRange.Select End If End Sub
補足
ありがとうございます。 やりたい事ができてます。 ただ少し操作面で欲を言ってしまうと、 検索キーワードを入力し、カーソルをセルから外すなり、入力モードから切り替える必要がないですか? キーワードを入力し、すぐにエンターキーで検索に行くようにしたいのですが・・・。 無理なのでしょうか? それから、日本語文字に反応しなかったのですが、これも無理でしょうか?? 文字の一部にも検索が引っかかるように・・・。 例えば、「日本語」というデータに、「日本」というキーワードで引っかかるように。 てめえでプログラム憶えろよってな話ですが、すみませんが余裕があったら教えてください。お願いします。
- kazuhiko5681
- ベストアンサー率49% (79/159)
こんばんわ。あなた様のおやりになりたいことはVBAのマクロでは、実現させることが難しいように思います。 マクロ機能というのは、、やりたいことが具体化していてそれを手操作ではなく自動で実行したい時に書くものです。ですから、なんにでも使えるテンプレートのようなものは、マクロでは作ることができないと思います。 何か具体例を挙げていただければ、サンプルマクロを提供することができるかと思います。
補足
なるほどそういう事ですか。 具体例・・・。 とりあえず、セルB2に検索キーワードを入力し、 B3~M3より下に記述されている日本語・英数字を検索し、その場所に移動するという機能があればと考えていました。 例えば、B3~M3以下に日本語とその意味と・・・を記入して、検索できるオリジナルの辞書みたいなものが作れるとか。 できれば、シートそれぞれ同じ場所に検索キーワード入力セルがあり、 検索範囲はシート全体にできると良いかと。 (シートは新語辞典とかデジタル用語辞典とか分けるためなど・・・。) そういう意味でテンプレートみたいなものと書いたのですが、説明不足でした。
- Hageoyadi
- ベストアンサー率40% (3145/7860)
じゃ、これは?
- kazuhiko5681
- ベストアンサー率49% (79/159)
はじめまして。もし私でよろしければサンプルマクロを作ってみたいと思います。 もし、ご希望の節はあなた様のおやりになりたいことを具体的に詳しくお知らせ下さい。 お手数をおかけいたしますが、よろしくお願いいたします。
補足
ありがとうございます。 何にでも応用できるようテンプレートみたいなものを探してまして、 具体的なものは無いのですが・・・。 とりあえず[Ctrl]+[F]と同じ機能で、 表の内容(他のシートなど全体) を検索し、その場所に移動する機能があれば充分な感じです。 具体性がなくてすみません。
- Hageoyadi
- ベストアンサー率40% (3145/7860)
Excel上でのweb検索も考慮に入れたものでしょうか? それともand検索やor検索でしょうか? 下記で探せると思いますのでお試しください。 http://plaza14.mbn.or.jp/~sunago/ http://www.age.ne.jp/x/kumapi/excel/excelvba.htm http://arena.nikkeibp.co.jp/tec/vba/ http://www.max.hi-ho.ne.jp/~happy/ http://homepage2.nifty.com/housaka/excel/vbafaq00.html
- imogasi
- ベストアンサー率27% (4737/17069)
(1)探すもの 文字列(語句)ですか。 「[Ctrl]+[F]ではなく、Yahooやgooのような検索機能です。」とは何を意味するのですか。 Yahooやgooも語句を文章から探しているのでしょう。 「検索([Ctrl]+[F])ではなく」とはなにを意味するのでしょう。 (2)探す対象の範囲 当シート、他のシートも(ブック)、他のブック、エクセル以外の他のファイル、ネットワーク、WEBなど、どの辺まで考えないといけないですか。 (3)「検索操作をマクロ記録して、必要に応じて修正する」では、どこが満たされないのでしょうか。 「テキストボックスで探す語句を入力させ、Findメソッドで探し該当を列挙する。」ではダメですか。
補足
マクロの機能がこんなに広いものとは思わなかったので、説明不足になってしまいました。 補足しますと、 エクセルファイル上に、Yahooやgooのようなテキストボックス(?)とボタンを作り、 [Ctrl]+[F]と同じ役割をするようにしたいのです。 範囲はそのファイル(当シート、他シート)の程度です。 (3)の意味がよく分からなかったのですが、 多分そういう事なんじゃないかなと感じました。
補足
度々プログラムしてもらいありがとうございました。 大分思ったものに近づいたのですが、 やはり、[Ctrl] + [F]の機能と同じものは作れないのでしょうかね? ホントに[Ctrl] + [F]を使えば・・・って感じなのですが、 その2つのボタンを1つの画面上のボタンに変えられることと、 見栄えが良くしたいってのがあります。 なので、忠実に[Ctrl] + [F]の機能が欲しいところです。 不可能であれば、不可能であることだけでも分かれば幸いなのですが??。