• ベストアンサー

コマンドボタンでマクロを起動するとエラーになる

以下のようなコードをツールバーのマクロから起動するようにするとできるのですがコマンドボタンから起動するようにするとエラーになります。なぜでしょうか? Private Sub CommandButton1_Click() Application.ScreenUpdating = False Workbooks.Open "C:\My Documents\b.xls" Windows("b.xls").Activate Columns("A:C").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _ Workbooks("a.xls").Sheets("Sheet2").Range"A1:A3"), CopyToRange:=Columns("E:G"), Unique:=True ~ここでエラー'1004'~ Windows("a.xls").Activate Workbooks("C:\My Documents\b.xls").Close Application.ScreenUpdating = True End Sub

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

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

Columns("A:C").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _ Workbooks("a.xls").Sheets("Sheet2").Range"A1:A3"), CopyToRange:=Columns("E:G"), Unique:=True を Worksheets("b.xls").Columns("A:C").AdvancedFilter _ CriteriaRange:=Workbooks("a.xls").Worksheets("Sheet2").Range("A1:A3"), _ Action:=xlFilterCopy, _ CopyToRange:=Workbooks("a.xls").Worksheets("Sheet1").Columns("F:G"), _ Unique:=False にするとどうですか

hetox2
質問者

お礼

解決しました。ありがとうございました。

その他の回答 (1)

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

こんにちは。KenKen_SP です。 恐らくは、 > Windows("b.xls").Activate > Windows("a.xls").Activate でアクティブシートが変わってしまい、 > Columns("A:C").AdvancedFilter ..... の Columns がどのシートか見失って失敗するのでしょう。この部分を Workbook("ブック名").Sheets("シート名").AdvancedFilter ... のように AdvancedFilter を設定する場所を明示的に書いてみて下さい。 > CommandButton1_Click.... の点をみれば、シートモジュールに書いたのでしょうか? なら、書き方として、ThisWorkbook とか Me キーワードも使えるかも しれません。

hetox2
質問者

お礼

なるほど。ありがとうございました。