0

Microsoft Office 2010 を使用しています。

クリック時に「AdvancedFilter」を更新するボタンを作成したいと考えています。
私がしたことは、アクションを再生するためにマクロを記録することです。
しかし、マクロは最初の実行ですでに失敗しています。

Sub Test()
'
' Test Macro
'

Workbooks("requirement_spec.xls") _
    .Sheets("Requirements").Range("A4:BU279").AdvancedFilter _
        Action:=xlFilterCopy, _
        CriteriaRange:=Range("A1:F5"), _
        CopyToRange:=Range("A11:BU11"), _
        Unique:=False
End Sub

Excel のマクロ メニューまたはボタンからマクロを開始すると、次のエラーが発生します。

実行時エラー '1004':
Range クラスの AdvancedFilter メソッドが失敗しました

エラー メッセージを生成するときに、自動的に記録されたマクロの文字を変更しませんでした。
(私はちょうどSOのためにいくつかの改行の変更をしました)

4

2 に答える 2

3

今日、Excel 2013 で似たような問題に遭遇しました。ここに来て、実際の解決策がない古い質問に気付きました。

私が見つけたのは、フィルター付きのシート内の範囲が選択されているときにエラーが表示されないことです。したがって、次のことがうまくいきました:

Sub Test()
'
' Test Macro
'
Dim wb As Workbook, wbSave As Workbook, _
    ws As Worksheet, wsSave As Worksheet, rSel As Range
'don't annoy users with changing the selection
Application.ScreenUpdating = False
'save old selection values to be sure
Set wbSave = ActiveWorkbook
Set wsSave = ActiveSheet
Set rSel = Selection
'activate target workbook + select something
'in my case it's a sheet in the same test workbook
Set wb = Workbooks("requirement_spec.xls")
wb.Activate
Sheets("Filter").Select
Range("A11").Select
'apply filter now    
Sheets("Requirements").Range("A4:BU279").AdvancedFilter Action:=xlFilterCopy, _
    CriteriaRange:=Range("A1:F5"), CopyToRange:=Range("A11"), Unique:=False
'restore old selection to be sure
wbSave.Activate
wsSave.Activate
rSel.Select
'allow screen updating again
Application.ScreenUpdating = True
End Sub
于 2014-07-16T21:15:31.760 に答える
0

多分試してください:

Workbooks("requirement_spec.xls") _
    .Sheets("Requirements").Range("A4:BU279").AdvancedFilter _
        Action:=xlFilterCopy, _
        CriteriaRange:=Range("A1:F5"), _
        CopyToRange:=Range("A11"), _
        Unique:=False
End Sub

約 50 列の 275 行 (A4 から BU 279) が同じワークシート Range("A11") にコピーされることを望んでいますか?

于 2013-05-14T09:31:59.987 に答える