[検索と置換]ダイアログボックスの[検索]タブを表示すると(Ctrl + Fを押すのが最も簡単な方法です)、Excelは正確に何を検索するかについて特定の仮定を行います。 (図1を参照してください。)検索する対象は、[範囲内]ドロップダウンリストの設定によって決まります。 [検索と置換]ダイアログを最初に表示したとき、[範囲内]はデフォルトで[シート]に設定されています。この設定は、ダイアログボックスを表示する前に1つのワークシートを選択したか、複数のワークシートを選択したかに関係なく当てはまります。

image

図1. [検索と置換]ダイアログボックスの[検索]タブ。

[範囲内]ドロップダウンリストをデフォルトで(シートではなく)ブックに設定する場合、Excelでこれを指定する方法はありません。 [範囲内]ドロップダウンリストの設定がExcelとの現在のセッションで永続的であるという事実に、ある程度の慰めを得ることができます。つまり、ワークブックに設定して検索を完了し、後で[検索と置換]ダイアログボックスの[検索]タブを表示すると、[範囲内]は[ワークブック]に設定されたままになります。

一見すると、マクロを使用してこの問題に取り組む方法がないように見えるのは興味深いことです。これは、Excelには、[検索と置換]ダイアログボックスの設定をマクロで簡単に表示および変更する方法が用意されていないためです。 Dialogsコレクションを使用して多くのダイアログボックスを表示できますが、検索と置換は表示できません。代わりに、VBAでは、次のコードを使用して、古いバージョンの[検索]ダイアログボックスを表示できます。

Sub ShowFind1()

Application.Dialogs(xlDialogFormulaFind).Show End Sub

残念ながら、このバージョンの[検索]ダイアログボックスには、[検索と置換]ダイアログボックスの[検索]タブにある[範囲内]ドロップダウンリストで実行できるように、検索の範囲を指定できるコントロールがありません。

正しい[検索と置換]ダイアログボックスを表示する方法はありますが、Dialogsコレクションを使用する方法ではありません。代わりに、CommandBarsコレクションを使用してダイアログボックスをプルアップする必要があります。これは基本的に、メニューコマンドを使用してダイアログボックスを表示します。方法は次のとおりです:

Sub ShowFind2()

ActiveSheet.Cells.Find What:="", LookAt:=xlWhole     Application.CommandBars("Worksheet Menu Bar").FindControl( _       ID:=1849, recursive:=True).Execute End Sub

Findメソッドを使用すると、[検索と置換]ダイアログでさまざまなパラメーターを設定できます。次に、CommandBarsオブジェクトにアクセスして、ダイアログボックスを実際に表示します。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

link:/ excelribbon-ExcelTipsMacros [ここをクリックして、新しいブラウザタブでその特別なページを開きます]

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(3170)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。

link:/ excelribbon-Searching_a_Workbook_by_Default [デフォルトでワークブックを検索する]