• ベストアンサー

エクセルマクロの質問

マクロで検索したいシートに移動して、検索のダイアログを表示するまでさせたいのですが、どうすればいいのでしょうか。教えて下さい。

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

こんにちは。KenKen_SP です。 > 5枚のシートを選択して、そこから検索したいのですが...   Application.Dialogs(xlDialogFormulaFind).Show で表示されるのは、Excel2000 までの古い検索ダイアログですね... よく覚えてないですけど、古いタイプのでは不可能だったような? これは、新タイプの検索ダイアログの話ですよね? 残念ながら Application.Dialogs からでは開けませんが、工夫しだいで VBA からこのダイアログを表示することは可能です。簡単に言えば、   Application.CommandBars.FindControl(ID:=1849).Execute この一行だけです。が、、これだけだと手作業で [Ctrl]+[F] とするとか、 SendKeys した方が早いので、折角 VBA を使うのですから、それなりに自動 化してみます。 Sub Sample()   ' Excel 2002 以降の新しい検索ダイアログを表示して、[すべて検索]を   ' VBA から実行する   Dim rngDummy As Range   Dim strKeyword As String   Dim aryShNamse As Variant        aryShNamse = Array("Sheet1", "Sheet2", "Sheet3", "Sheet4", "Sheet5")   strKeyword = "1" '検索語をここに入れる"        ' ダイアログに設定できるものは予めダミーで Find メソッド   ' を実行することで設定しておく   On Error Resume Next   Set rngDummy = Sheet1.Range("A1").Find( _     What:=strKeyword, _     LookIn:=xlValues, _     LookAt:=xlWhole, _     MatchByte:=False)   Set rngDummy = Nothing   On Error GoTo 0      ' 複数のシートを選択し、作業グループにする   Worksheets(aryShNamse).Select        ' Excel メニュー[編集]-[検索]のメニューボタンを実行   ' これで Excel2002移行の新しい[検索]ダイアログが表示   ' されます   Application.CommandBars.FindControl(ID:=1849).Execute     ' あとはユーザーに任せてもよし、VBA で検索まで実行させ   ' たいなら SendKeys で逃げる   ' 検索ダイアログの[すべて検索]ボタンは [Alt]+[I]キー   SendKeys "%I"    End Sub

majalis3113
質問者

お礼

大変詳しいご回答有難うございました。

その他の回答 (2)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

Sub Macro5() Worksheets("シート名").Activate Application.Dialogs(xlDialogFormulaFind).Show End Sub では?

majalis3113
質問者

お礼

早々のご回答ありがとうございました。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

Sheets("シート名").Activate Application.Dialogs(xlDialogFormulaFind).Show

majalis3113
質問者

補足

早々のご回答有難うございました。 早速やってみたところ、出来ました。ただ・・5枚のシートを選択して、そこから検索したいのですが、マクロの実行から検索のダイアログを表示させ、値の入力をすると「値がありません。」とメッセージがでます。マクロの実行ではなく、手作業でシート選択→検索→値の入力をすると、検索ができるのですが、、、どうしてこうなるのでしょうか。教えて下さい。

関連するQ&A