Макрос VBA Clear Macro не работает, если только на листе критериев фильтра - PullRequest
0 голосов
/ 02 апреля 2019

Я создал пользовательскую форму для простого поиска по фильтру. Я могу открыть форму и отфильтровать, когда выбран любой лист. Однако, когда я использую кнопку очистки из пользовательской формы, но я не на листе критериев фильтрации (Лист1), я получаю сообщение об ошибке «1004: метод выбора класса диапазона не пройден» для первого оператора выбора.

Sub Clear()
'
' Clear Macro
'
    Sheet1.Range("A2:H2").Select
    Selection.ClearContents
    Sheet1.Range("A5:H1725").Select
    Selection.ClearContents
    Sheet1.Range("A2").Select

End Sub

Я вынужден открыть лист фильтра или мой код работает неправильно? Я хотел, чтобы был лист с кнопкой «Открыть форму» с скрытыми данными (Лист2) и критериями фильтра (Лист1).

На cmdClear_click () я вызываю это перед запуском Clear:

Private Sub ClearForm()
'
'clear values
    With Me
        .txtCustId = ""
        .txtCustName = ""
        .txtAddress = ""
        .txtCity = ""
        .txtState = ""
        .txtZip = ""
        .txtCountry = ""
        .txtStatus = ""
    End With
End Sub

Единственное, о чем я могу думать, это может испортить это Я ...

1 Ответ

2 голосов
/ 02 апреля 2019

.Select работает, только если вы находитесь на указанном Листе, в вашем коде вы используете Sheet1(..).Select, что означает, что вы выбираете что-то на Листе1, если вы находитесь на другом Листе / Вкладке, это не удастся.Чтобы избежать этого, вы должны избегать использования Select.

Тот же результат без Select:

Sub Clear()
'
' Clear Macro
    With ThisWorkbook
        'Replace "Sheet1" if you have renamed your Sheet to something else
        .Sheets("Sheet1").Range("A2:H2").ClearContents
        .Sheets("Sheet1").Range("A5:H1725").ClearContents
    End With
End Sub
...