アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (3件)

Sheets("シート名").Activate


Application.Dialogs(xlDialogFormulaFind).Show

この回答への補足

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

補足日時:2006/09/08 14:43
    • good
    • 0

Sub Macro5()


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

では?
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/09/08 14:45

こんにちは。

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
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/09/13 09:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!