VBA Run Time Error 1004 AutoFilter method of Range class Failed
<p>I hope you can help. I am getting the error Run Time Error 1004 AutoFilter method of Range class Failed </p>

<p>When I run my code <code>Public Sub TestThis()</code>, the funny thing is It works perfectly by itself, but when I put it into the other code and call it, it gives the error Run Time Error 1004 AutoFilter method of Range class Failed </p>

<p>The error is happening on this line</p>

<pre><code>.Range("A:K").AutoFilter Field:=11, Criteria1:="&lt;&gt;", Operator:=xlFilterValues
</code></pre>

<p>Like I said when not called and run by itself no problem when called it bugs. Any help would be greatly appreciated. </p>

<p>My code is below. </p>

<pre><code>Sub Open_Workbook_Dialog()

Dim my_FileName As Variant
Dim my_Workbook As Workbook

  MsgBox "Pick your CRO file" '&lt;--| txt box for prompt to pick a file

  my_FileName = Application.GetOpenFilename(FileFilter:="Excel Files,*.xl*;*.xm*") '&lt;--| Opens the file window to allow selection

  If my_FileName &lt;&gt; False Then
    Set my_Workbook = Workbooks.Open(Filename:=my_FileName)

    Call TestThis

    Call Filter(my_Workbook) '&lt;--|Calls the Filter Code and executes

  End If
End Sub

Public Sub Filter(my_Workbook As Workbook)
  Dim rCountry As Range, helpCol As Range
  Dim wb As Workbook
  With my_Workbook.Sheets(1) '&lt;--| refer to data worksheet
    With .UsedRange
      Set helpCol = .Resize(1, 1).Offset(, .Columns.Count) '&lt;--| get a "helper" column just at the right of used range, it'll be used to store unique country names in
    End With

   With .Range("A1:Y" &amp; .Cells(.Rows.Count, 1).End(xlUp).Row) '&lt;--| refer to its columns "A:Y" from row 1 to last non empty row of column "A"
            .Columns(11).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=helpCol, Unique:=True '&lt;-- call AdvancedFilter on 11th column of the referenced range and store its unique values in "helper" column
            Set helpCol = Range(helpCol.Offset(1), helpCol.End(xlDown)) '&lt;--| set range with unique names in (skip header row)
            For Each rCountry In helpCol '&lt;--| iterate over unique country names range (skip header row)
                .AutoFilter 11, rCountry.Value2 '&lt;--| filter data on country field (11th column) with current unique country name
                If Application.WorksheetFunction.Subtotal(103, .Cells.Resize(, 1)) &gt; 1 Then '&lt;--| if any cell other than header ones has been filtered...
                    Set wb = Application.Workbooks.Add '&lt;--... add new Workbook
                        wb.SaveAs Filename:=rCountry.Value2 '&lt;--... saves the workbook after the country
                            .SpecialCells(xlCellTypeVisible).Copy wb.Sheets(1).Range("A1")
                               ActiveSheet.Name = rCountry.Value2  '&lt;--... rename it
                           .SpecialCells(xlCellTypeVisible).Copy ActiveSheet.Range("A1") 'copy data for country under header
                           Sheets(1).Range("A1:Y1").WrapText = False 'Takes the wrap text off
                           ActiveWindow.Zoom = 55
                         Sheets(1).UsedRange.Columns.AutoFit 'Autofits the column
                    wb.Close SaveChanges:=True '&lt;--... saves and closes workbook
                End If
            Next
        End With
        .AutoFilterMode = False '&lt;--| remove autofilter and show all rows back
    End With
    helpCol.Offset(-1).End(xlDown).Clear '&lt;--| clear helper column (header included)
End Sub

Public Sub TestThis()
Dim wks As Worksheet

Set wks = ThisWorkbook.Sheets(1)

With wks
.AutoFilterMode = False
.Range("A:K").AutoFilter Field:=11, Criteria1:="&lt;&gt;", Operator:=xlFilterValues
.Range("A:C").SpecialCells(xlCellTypeBlanks).Interior.Color = 65535
.AutoFilterMode = False
End With
End Sub
</code></pre>