Excel VBA - Фильтр в листах с меткой длиной 3 символа - PullRequest
0 голосов
/ 30 ноября 2018

Помогите, пожалуйста, в написании кода vba для массива, в котором в рабочей книге есть листы длиной 3 символа для запуска этой команды:

Например, если рабочие листы помечены: ATE, ARE, FOR,ETC, тогда это будет отфильтровано.Если рабочие листы помечены более или менее чем 3 буквами, игнорируйте.Надеюсь, что все прояснилось.Спасибо.

Ошибка, полученная из кода ниже:

Ошибка компиляции: неверный квалификатор.

Dim N As Long Dim wsName As String
> 
> For N = 1 To ThisWorkbook.Sheets.Count
>     wsName = ThisWorkbook.Worksheets(N).Name
>     
>     If Len(wsName) = 3 Then
>     
>     wsName.Range("$A$1:$XFC$104").AutoFilter Field:=12, Criteria1:=">=365" _
>         , Operator:=xlAnd
>     wsName.Range("$A$1:$XFC$104").AutoFilter Field:=17, Criteria1:=">100" _
>         , Operator:=xlAnd
>     
>     Else 'Do Nothing
>     End If Next N

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Спасибо Кирилл.

Вот рабочий код:

    Dim N As Long
    Dim wsName As String
    For N = 1 To ThisWorkbook.Sheets.Count
    wsName = ThisWorkbook.Worksheets(N).Name
    If Len(wsName) = 3 Then

    Sheets(wsName).Range("$A$1:$XFC$1104").AutoFilter Field:=12, Criteria1:=">=365" _
        , Operator:=xlAnd
    Sheets(wsName).Range("$A$1:$XFC$1104").AutoFilter Field:=17, Criteria1:=">100" _
        , Operator:=xlAnd
    Else 'Do Nothing
    End If
Next N
0 голосов
/ 30 ноября 2018

Вы делаете ссылки неправильно.

wsName = string.Это означает, что вы копируете только имя листа.

Ссылка, которую вы указываете: "Sheet1" .Range (). Action

Это неправильный синтаксис.Это будет уместно:

Sheets(wsName).Range().Action
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...