少し時間を取って、[検索と置換]ダイアログボックスの[検索]タブを表示します。これを行う最も簡単な方法は、Ctrl + Fを押すことです。ダイアログボックスが最初に表示されたとき(図1を参照)、Excelは、正確に何を検索するかについて特定の仮定を行います。検索する対象は、[範囲内]ドロップダウンリストの設定によって決まります。 ([範囲内]ドロップダウンリストを表示するには、[オプション]ボタンをクリックする必要がある場合があります。)

image

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

ダイアログボックスを最初に表示したとき、デフォルトでは、[範囲内]は[シート]に設定されています。この設定は、ダイアログボックスを表示する前に1つのワークシートを選択したか、複数のワークシートを選択したかに関係なく当てはまります。

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

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

Sub ShowFind1()

Application.Dialogs(xlDialogFormulaFind).Show End Sub

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

正しい[検索と置換]ダイアログボックスを表示する方法はありますが、Dialogsコレクションを使用する方法ではありません。代わりに、CommandBarsコレクションを使用してダイアログボックスをプルアップする必要があります。これは基本的に、メニューコマンドを使用してダイアログボックスを表示します。 (考えてみると、かなり皮肉なことです。Excelにはメニューがありませんが、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_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

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

このヒント(10348)は、Microsoft Excel 2007および2010に適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。