Как я могу включать только определенные слова при автоматической фильтрации столбца с использованием VBA

#excel #vba #autofilter

#excel #vba #автофильтр

Вопрос:

Я пытаюсь включить только определенные слова в определенный столбец при автоматической фильтрации, но нахожу сообщение о синтаксической ошибке, но не вижу, где ошибка. Столбец имеет значение H, то есть столбец 8, но когда я запускаю макрос, он выдает ошибку компиляции … синтаксическую ошибку, при этом в коде выделены все слова.

У меня есть уменьшенная версия того же кода, которая прекрасно работает на другом листе, хотя она фильтрует только для 4 слов и стремится исключить их, поэтому имеет .AutoFilter .Columns.Count, "<>X" . С помощью этого я хотел отфильтровать все, кроме выбранных мной слов, поэтому я скопировал код, все от С до конца С, с другого листа, исправил слова и изменил строку автофильтра, чтобы удалить <>

Я уверен, что кто-то здесь сразу заметит ошибку, но, хоть убей, я ее не вижу.

Вот код

 Sub FA_Racing_1()
'
' FA_Racing_1 Macro
' VDW Rank, RnkPFP, Distance, PR Odds, Handicap
'
    Dim ws As Worksheet, lc As Long, lr As Long

    Set ws = ActiveSheet
    'range from A1 to last column header and last row
    lc = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
    lr = ws.Cells.Find("*", after:=ws.Range("A1"), LookAt:=xlPart, _
                        SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
    With ws.Range("A1", ws.Cells(lr, lc))
        With .Cells(2, .Columns.Count).Resize(.Rows.Count - 1)
            .FormulaR1C1 = "=if(or(rc8={""Ballinrobe"",""Bellewstown"",""Clonmel"",""Cork"", _
            ""Curragh"",""Downpatrick"",""Down Royal"",""Dundalk"",""Fairyhouse"", _
            ""Galway"",""Gowran Park"",""Kilbeggan"",""Killarney"",""Laytown"",""Leopardstown"", _
            ""Limerick"",""Listowel"",""Naas"",""Navan"",""Punchestown"",""Roscommon"", _
            ""Sligo"",""Thurles"",""Tipperary"",""Tramore"",""Wexford""}),""X"","""")"
            .Value = .Value
         End With
        .HorizontalAlignment = xlCenter
        .AutoFilter .Columns.Count, "X"
            .AutoFilter Field:=3, Criteria1:= _
        "<>*Handicap*"
        .AutoFilter Field:=38, Criteria1:="<=5"
        .AutoFilter Field:=24, Criteria1:="=~*", _
        Operator:=xlOr, Criteria2:="=~*~*"
        .AutoFilter Field:=100, Criteria1:="1"
         If .Rows.Count - 1 > 0 Then
        On Error Resume Next
        .Columns("C:C").EntireColumn.Hidden = True
        .Columns("G:G").EntireColumn.Hidden = True
        .Columns("I:I").EntireColumn.Hidden = True
        .Columns("K:L").EntireColumn.Hidden = True
        .Columns("N:W").EntireColumn.Hidden = True
        .Columns("Z:AJ").EntireColumn.Hidden = True
        .Columns("AN:AO").EntireColumn.Hidden = True
        .Columns("AQ:BQ").EntireColumn.Hidden = True
        .Columns("BT:CU").EntireColumn.Hidden = True
        .Columns("CW:CW").EntireColumn.Hidden = True
        .Offset(1, 0).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Copy
        On Error GoTo 0
            Else
                Exit Sub
        End If
    End With
     
    Workbooks("New Results File Active.xlsm").Sheets("FA Racing 1") _
          .Range("A" amp; Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues
   
    Application.CutCopyMode = False
End Sub
  

Есть мысли о том, что вызывает ошибку?

Комментарии:

1. Вы не можете использовать _ при написании формулы. Это _ предназначено для чтения как код, а не как жестко закодированный текст. Если вы хотите использовать _ , используйте это так: ,""Cork""," amp; _ в конце первой строки и """Curragh"", в начале вторых строк. Отредактируйте всю строку соответствующим образом.

2. Блестящая злая синяя обезьяна. Работает отлично. Это кажется немного нелогичным, когда вы видите, что это написано " amp; _ """ , но если это работает, это здорово. Приветствия