- ベストアンサー
コマンドボタンでマクロを起動するとエラーになる
以下のようなコードをツールバーのマクロから起動するようにするとできるのですがコマンドボタンから起動するようにするとエラーになります。なぜでしょうか? 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
- みんなの回答 (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 にするとどうですか
その他の回答 (1)
- KenKen_SP
- ベストアンサー率62% (785/1258)
こんにちは。KenKen_SP です。 恐らくは、 > Windows("b.xls").Activate > Windows("a.xls").Activate でアクティブシートが変わってしまい、 > Columns("A:C").AdvancedFilter ..... の Columns がどのシートか見失って失敗するのでしょう。この部分を Workbook("ブック名").Sheets("シート名").AdvancedFilter ... のように AdvancedFilter を設定する場所を明示的に書いてみて下さい。 > CommandButton1_Click.... の点をみれば、シートモジュールに書いたのでしょうか? なら、書き方として、ThisWorkbook とか Me キーワードも使えるかも しれません。
お礼
なるほど。ありがとうございました。
お礼
解決しました。ありがとうございました。