Ошибка макроса, потому что автофильтр не имеет значения - PullRequest
0 голосов
/ 01 апреля 2020

Я написал макрос для вызова некоторых записей из рабочего листа на основе введенных вручную настроек пользователя. Код, который я использую, показан ниже:

Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("Serial Number Data")

Sheets("Serial Number Data").Select

sh.UsedRange.AutoFilter 7, Range("project").Value
sh.UsedRange.AutoFilter 8, Range("platform").Value
sh.UsedRange.AutoFilter 9, Range("equipment").Value

Проблема в том, что существуют комбинации этих фильтров, которых не существует. Когда пользователь вводит значения для несуществующей комбинации, макрос выходит из строя. Есть ли способ установить флаг и отправить сообщение об ошибке в макросе, если значение недопустимо. Я посмотрел на создание зависимых фильтров для входов, чтобы устранить ошибку на внешнем интерфейсе, но, вероятно, стоило бы рассмотреть 100 комбинаций.

Ответы [ 2 ]

1 голос
/ 01 апреля 2020

Вы можете использовать Application.CountIfs, чтобы определить, существует ли комбинация этих значений:

With sh.UsedRange
    If Application.CountIfs(.Columns(7), sh.Range("project").Value, _
                            .Columns(8), sh.Range("platform").Value, _
                            .Columns(9), sh.Range("equipment").Value) = 0 Then
         ' Combination not found
    End If
End With
0 голосов
/ 02 апреля 2020

Я нашел простой способ решить проблему. Следующей операцией макроса было вырезать и вставить на другой лист. Я узнал, что это далеко без ошибок. Конечно, данных не было, поэтому я использовал If Worksheets ("myrange"). Range ("b13"). Value = "" Затем установил флаг ошибки и завершил макрос.

...