Это потому, что, когда вы вводите номер, нажмите «Ввод», input.nextInt()
потребляет только номер, а не «конец строки». Когда input.nextLine()
выполняется, он потребляет «конец строки» все еще в буфере с первого входа.
Вместо этого используйте input.nextLine()
сразу после input.nextInt()
Это ограничение автофильтров. Вы не можете использовать более двух фильтров в пользовательском интерфейсе.
Вместо этого вы можете использовать фильтр «Дополнительно», или вы можете создать массив значений, соответствующих вашим критериям, и фильтровать с помощью этого:
Sub MultiContainsAutofilter()
Dim vData
Dim shData As Worksheet
Dim d As Object
Dim i As Long
Set shData = ActiveSheet
vData = shData.UsedRange.Columns(2)
Set d = CreateObject("Scripting.Dictionary")
For i = LBound(vData, 1) To UBound(vData, 1)
If UCase$(vData(i, 1)) Like "*A*" Or UCase$(vData(i, 1)) Like "*B*" Or UCase$(vData(i, 1)) Like "*C*" Then
d(vData(i, 1)) = Empty
End If
Next i
If d.Count > 0 Then shData.UsedRange.AutoFilter Field:=2, Criteria1:=d.keys, Operator:=xlFilterValues
End Sub