Ошибка времени выполнения 1004 - Ошибка метода автофильтра класса диапазона - PullRequest
0 голосов
/ 29 мая 2019

Когда я запускаю свой VBA, я получаю

Ошибка времени выполнения'1004;Метод автофильтра класса Range не удался

Я попытался изменить лист как лист 1, как это было рекомендовано в предыдущем ответе, и он не работал

Sub Split_Data_in_workbooks()

Application.ScreenUpdating = False

Dim data_sh As Worksheet
Set data_sh = ThisWorkbook.Sheets("Working File")

Dim setting_Sh As Worksheet
Set setting_Sh = ThisWorkbook.Sheets("Setting")

Dim nwb As Workbook
Dim nsh As Worksheet

''''''Get unique districts


setting_Sh.Range("A:A").Clear
data_sh.AutoFilterMode = False
data_sh.Range("b:b").Copy setting_Sh.Range("A1")

setting_Sh.Range("A:A").RemoveDuplicates 1, xlYes

Dim I As Integer

For I = 2 To Application.CountA(setting_Sh.Range("A:A"))

   data_sh.UsedRange.AutoFilter 2, setting_Sh.Range("A" & I).Value

   Set nwb = Workbooks.Add
   Set nsh = nwb.Sheets(1)

   data_sh.UsedRange.SpecialCells(xlCellTypeVisible).Copy nsh.Range("A1")

   nwb.SaveAs setting_Sh.Range("H6").Value & "/" & setting_Sh.Range("A" & 
I).Value & ".xlsx"
   nwb.Close False
   data_sh.AutoFilterMode = False
Next I

setting_Sh.Range("A:A").Clear

MsgBox "Done"

End Sub

Код долженвзять информацию о каждом округе (которая может состоять из нескольких строк) из одной рабочей книги и сохранить ее в отдельных рабочих книгах и сохранить в указанном файле.Код не будет проходить через эту строку

data_sh.UsedRange.AutoFilter 2, setting_Sh.Range("A" & I).Value

1 Ответ

0 голосов
/ 29 мая 2019

Возможно, вы передаете неверные аргументы методу data_sh.UsedRange.AutoFilter. Первый аргумент не должен превышать количество полей - попробуйте 1 вместо 2. Описание второго аргумента из документации :

Критерии (строка; например, «101»). Используйте "=", чтобы найти пустое поля, «<>» для поиска непустых полей и «> <» для выбора (нет данных) поля в типах данных. Если этот аргумент опущен, критерии Все. Если оператор является xlTop10Items, Criteria1 указывает количество элементы (например, «10»). </p>

Попробуйте эту строку, а затем поиграйте с разными значениями аргументов. Убедитесь, что вы знаете, какие значения аргументов вы передаете в функцию:

data_sh.UsedRange.AutoFilter 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...