#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; _ """
, но если это работает, это здорово. Приветствия