Я получаю отчет об организации работы и хочу найти и отфильтровать по уникальному значению идентификатора. Уникальный фильтруемый идентификатор указывается свойством publi c (этот номер используется в другом случае, поэтому он публикуется c), вводимым через текстовое поле в пользовательской форме. Используемый файл представляет собой отчет с динамическим именем, который пользователь выбирает в диалоговом окне открытия файла.
- Пользователь вводит уникальный идентификатор менеджера, которого он хочет фильтровать, в поле
- Используйте уникальный идентификатор для поиска у какого столбца уровня менеджера есть уникальный идентификатор
- Перейти к следующему столбцу, если идентификатор не найден
- Как только идентификатор найден, столбец фильтра
Существует 9 различных менеджеров уровни, которые я фильтрую, столбцы AU, AW, AY, BA, B C, BE, BG, BI и BK, и все они располагаются на строке 3. Поэтому у меня есть столбцы «A3: BK3», но я только фильтрую между «AU3: BK3» для извлечения данных в более ранних столбцах.
Проблема: я продолжаю получать «Ошибка времени выполнения» 1004: сбой метода автофильтра класса Range, и я понятия не имею, почему даже после попытки отладки. Он работает с некоторыми столбцами, но не с другими при использовании идентификаторов тестов, которые находятся в 9 столбцах.
Код:
Private Sub EmailButton_Click()
'test WWIDS
'75305 -- 337431 -- 152820578 -- 152821156
Application.ScreenUpdating = False
'Filter by WWID -- Question: How to know who to pull for?
'Filter criteria (Unique ID - WWID), if it does not exist, then move to next, else end/stop
If Len(Trim(Me.EnterWWIDtxtbox.Text)) = 0 Then
Me.EnterWWIDtxtbox.SetFocus
MsgBox "Must provide a Unique ID"
Exit Sub
End If
Dim ws As Worksheet
Dim wb As Workbook
Set wb = Workbooks.Open(Filename:=OpenFileTxt)
Set ws = wb.Worksheets("Sheet1")
With wb.Worksheets("Sheet1")
Dim aColumns() As String
aColumns = Split("AU,AW,AY,BA,BC,BE,BG,BK,BI", ",")
Dim bFound As Boolean
bFound = False
Dim rFound As Range
Dim vColumn As Variant
For Each vColumn In aColumns
Set rFound = ws.Columns(vColumn).Find(WWID, , xlValues, xlPart)
If Not rFound Is Nothing Then
bFound = True
MsgBox "Found [" & WWID & "] in column " & vColumn
With ws.Columns(vColumn)
.AutoFilter 1, rFound.Value
End With
Exit For
End If
Next vColumn
If bFound = False Then MsgBox "Unique ID [" & WWID & "] not found"
End With