プロが教えるわが家の防犯対策術!

以下のようなコードをツールバーのマクロから起動するようにするとできるのですがコマンドボタンから起動するようにするとエラーになります。なぜでしょうか?

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

A 回答 (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
にするとどうですか
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/06/09 15:22

こんにちは。

KenKen_SP です。

恐らくは、

> Windows("b.xls").Activate
> Windows("a.xls").Activate

でアクティブシートが変わってしまい、

> Columns("A:C").AdvancedFilter .....

の Columns がどのシートか見失って失敗するのでしょう。この部分を

Workbook("ブック名").Sheets("シート名").AdvancedFilter ...

のように AdvancedFilter を設定する場所を明示的に書いてみて下さい。

> CommandButton1_Click....

の点をみれば、シートモジュールに書いたのでしょうか?

なら、書き方として、ThisWorkbook とか Me キーワードも使えるかも
しれません。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/06/09 15:22

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