• ベストアンサー

EXCEL2003の検索方法

お世話になります。 業務でExcel2003でデータベースを作成しており、データベース内を検索しながら、ないものについては新規入力をしています。 検索は普通にExcelの検索機能を使っていますが、先頭一致の検索ではないため使い辛く、また、いちいち検索ボタンを押さなくても一文字入力するごとに、カーソルがジャンプしてくれるといいなと思います。 例えば、「ABC」を検索するときに、「A」を入力すると先頭が「A」で始まるデータの最初のセルにジャンプする感じで、 1行目 AAAA 2行目 AABB 3行目 ABBB 4行目 ABCA 上記の場合なら、「A」と入力すると1行目にジャンプし、「AB」になると3行目へ。「ABC」になると4行目になって欲しいのです。 また、Excelの検索機能と同じように、検索画面は出ている状態で、データベースもスクロールできたりセル内を修正できるといいのですが… ネットで検索してはみたのですが、なかなか思うようなのが検索できず、 質問させて頂きました。よいフリーソフトや、参考サイトがありましたらご教授下さい。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.4

#3です。 ユーザーフォームに Private Sub TextBox1_Change() Dim r As Range ' シート名注意↓ Set r = Worksheets("Sheet1").Range("D:D").Find(What:=TextBox1.Text & "*", _ LookIn:=xlValues, LookAt:=xlWhole) If r Is Nothing Then Exit Sub r.Select End Sub Private Sub UserForm_Terminate() Unload UserForm1 End Sub 標準モジュールに Sub try() UserForm1.Show vbModeless End Sub としたらマクロ【try】を実行。 と言う感じを考えました。 ⇒シート名は適宜修正願います。

nanami0310
質問者

お礼

すごいです!完璧です!!! ありがとうございました! また、何か変更点等ありましたらご相談させて下さい。 本当にありがとうございました。

その他の回答 (3)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

ユーザーフォームにテキストボックスを作り、テキストボックスチェンジイベントで 検索をするとか? ユーザー フォームをモードレスで表示させておけば、セル選択・修正等もできますけど。 そう言うのとは違うのかな。

nanami0310
質問者

補足

VBAは初心者なのでテキストボックスチェンジイベントの意味を理解するのに手間どってしまい、遅くなりました。申し訳ありません。 イメージはこれです! 申し訳ありませんが、もう少しお付き合い下さい。 調べた検索ページ(http://www.moug.net/tech/exvba/0090008.htm)から Private Sub TextBox1_Change() Dim Mynumber As String Dim FoundCell As Range Columns("D:D").Select (←D列のみの検索でOKです) Mynumber = UserForm1.TextBox1.Text Set FoundCell = Cells.Find(What:=Mynumber, After:=ActiveCell, _ LookIn:=xlFormulas, LookAt:=xlPart, _ SearchOrder:=xlByRows, _ SearchDirection:=xlNext, MatchCase:=False, _ MatchByte:=False) If FoundCell Is Nothing = False Then FoundCell.Select End If End Sub をコピーして作ってみましたが、これだと「AB」と入力すると先頭一致ではなく「AAB」も検索してしまうようです。これを先頭一致にしたいのと、一致するセルがなくなるとセル「A1」に戻ってしまうのですが、最後に検索されたセルで止まらせることは可能でしょうか?また、 UserForm1.Show vbModeless は、どこに記入すればよいでしょうか? 宜しくお願いします。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

>検索は普通にExcelの検索機能を使っていますが、 >先頭一致の検索ではないため使い辛く これ以上のものを作るのは容易ではありませんよ。 ワイルドカードを使います。 「検索する文字列(N)」を、AB* として、検索ダイアログボックスのオプションで 「セル内容が完全に同一であるものを検索する」 に設定すれば「先頭一致」で検索できます。 >また、いちいち検索ボタンを押さなくても一文字入力するごとに、 >カーソルがジャンプしてくれるといいなと思います。 デフォルトで「次を検索」ボタンがアクティブになっています。 Enter で「次を検索(F)」が実行され、検索されたセルにジャンプし選択表示されます。 アクセスキーを使う方法もあります。 ボタン名の後に、かっこ付けのアルファベットが記されています。 これがアクセスキーです。 「次を検索(F)」は、AltキーとFキーを同時押しすれば実行されます。 このように、編集メニューの「検索」ダイアログボックスは、すべての機能がキー操作可能です。 念のため、ご存知かもしれませんが、Ctrl+F でダイアログボックスが表示されます。 アクセスキー以外に、Tab キー操作で、ダイアログボックスのコントロール間を移動することができます。 ボタンを押すのは、Enter です。 「すべて検索」すれば、検索結果がダイアログボックスの下部にリストボックスが表示され、検索結果が一覧表示されます。 リストボクスがアクティブな状態で、矢印キーでリスト内を移動し、リストを個別に選択できます。 同時に、該当セルにジャンプ、スクロールし、選択されたセルが表示されます。 因みに、Ctrl+A と操作すれば「すべて検索」されたセルが全選択されます。

nanami0310
質問者

お礼

やはりVBAが使えないと難しいですよね。。。 昔のExcelには先頭一致を選択する項目があったのに…と思っていたのですが、「完全一致」の意味を理解していませんでしたし、アクセスキーの意味もようやく分かりました。 ありがとうございました。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

オートフィルターの機能を利用したマクロはどうでしょう。 データのシートにはオートフィルターを設定しておきます。 データ=>フィルター=>オートフィルター で項目の行に▽を表示した状態にしておきます。 シートの上部分にでもボタンを配置します (表示=>ツールバー=>フォームをクリック、ボタンを選択して配置) ボタンを右クリックして、マクロの新規作成 Sub ボタン1_Click() Myname = InputBox("抽出文字は") Selection.AutoFilter Field:=1, Criteria1:="=" & Myname & "*", Operator:=xlAnd End Sub となるように、SubとEndSubの間の2行をコピィして閉じてみてください。

nanami0310
質問者

お礼

お返事遅くなり申し訳ありません。 コード表記ありがとうございます。今、動作確認しました。 検索はこれでかけやすくなりました!参考にさせて頂きます。 ありがとうございました。

関連するQ&A

専門家に質問してみよう