Я пытаюсь использовать для каждого цикла, чтобы динамически находить, из какого столбца данный заполненный комбинированный блок извлекает данные из таблицы Excel.Может быть выполнено более одного поиска в комбинированном списке (то есть найти строки, в которых cmb_year = 2018 и cmb_period = 6 и cmb_group = health. Конечная цель состоит в том, чтобы найти необработанные данные по одному критерию, а затем найти эти данные (тот, который мы только что отфильтровали) для поиска.следующие критерии и т. д., пока не будут выполнены все условия.
Я попытался использовать свойство BoundColumn, чтобы код сразу распознал, какой столбец нужно посмотреть, чтобы увидеть, соответствует ли информация из столбца таблицы данным в выпадающем списке., но BoundColumn - это свойство, которое, по-видимому, используется только для многоколоночных списков.
If WorksheetExists("FilteredSheet") Then
Worksheets("FilteredSheet").Delete
Else
Dim wrksName As String
wrksName = "FilteredSheet"
Dim ws2 As Worksheet
Set ws2 = Worksheets.Add(Type:=xlWorksheet)
With ws2
.Name = wrksName
End With
End If
Dim ws As Worksheet
Set ws = Worksheets("Sheet2")
Dim populatedBoxes As New Collection
'finds all combo boxes that are populated
Set populatedBoxes = GetPopulatedThings(Multipage1, "ComboBox")
Dim cb As MSForms.ComboBox
For Each cb In populatedBoxes
'attemps to loop through each combobox to search for values in it's corresponding column in the worksheet
Call FilterSheet(ws, ws2, cb)
Next
End Sub
Private Function FilterSheet(wrks As Worksheet, pastewrks As Worksheet, cmb As ComboBox) As Worksheet
a = wrks.UsedRange.Rows(wrks.UsedRange.Rows.Count).Row
For i = 1 To a
'tries to find the column in a given row that matches where the combobox was originally populated from
If wrks.Cells(i, cmb.BoundColumn).Value = cmb.Value Then
wrks.Rows(i).Copy
pastewrks.Activate
b = pastewrks.Cells(Rows.Count, 1).End(xlUp).Row
pastewrks.Cells(b + 1, 1).Select
ActiveSheet.Paste
Worksheets(wrks).Activate
'pastes to all matching values to a new worksheet
End If
Next
Application.CutCopyMode = False
Set FilterSheet = pastewrks
End Function
Я не могу использовать boundcolumn в цикле for, расположенном в FilterSheet, поскольку при изменении свойства boundcolumn на что-то болеечем 1, значение поля со списком становится нулевым (скорее всего из-за того, что это поле со списком из одного столбца)