Заполните поле со списком на основе критериев с Excel VBA
ПОЖАЛУЙСТА ПОМОГИ! Мне нужно, чтобы это было сделано к концу дня СЕГОДНЯ (04.11.13)!!! Я пытался выяснить эту проблему несколькими способами в течение всего дня, и я не могу понять это. Нужна помощь!
У меня есть ряд пользовательских форм, которые пользователь использует для выбора определенных критериев, которые считывают данные из электронной таблицы, чтобы в конечном итоге создать список информации в окончательной пользовательской форме списка. В одной пользовательской форме (ScoreRange) пользователю предлагается ввести два числа в два отдельных списка (tbScore1 и tbScore2), а затем, как только они введут две оценки и нажмут командную кнопку с надписью "ОК", следующая пользовательская форма откроется с поле со списком (cbName), которое я хотел бы заполнить именами из столбца A, соответствующий счет которых в столбце E попадает в выбранный пользователем диапазон оценок. Я хочу сделать этот цикл поиска по строкам 2-401. В настоящее время поле со списком пустое, когда оно открыто; это не заполнение правильно. Вот текущий код, который у меня есть. Следует отметить, что пользовательская форма ScoreRange все еще открыта (она еще не выгружена).
Private Sub UserForm_Activate()
Dim i as Long
For i = 2 To 401
If Range("E" & i).Value >= ScoreRange.tbScore1.Value And Range("E" & i).Value <= ScoreRange.tbScore2.Value Then
Me.cbName.AddItem Range("A" & i).Value
End if
Next i
End Sub
1 ответ
Неважно, все. Я наконец решил, что единственный эффективный способ сделать это - использовать автофильтры. Вот последний код, который я использовал, для тех, кто заинтересован.
Private Sub UserForm_Activate()
Dim wksheet1 As Worksheet
Set wksheet1 = Sheets("Sheet1")
Dim LR As Long
LR = Range("A" & Rows.Count).End(xlUp).Row
Dim cbRange As Range
ActiveSheet.ListObjects("Table2").Range.AutoFilter Field:=5, Criteria1:= _
">=" & tbScore1.Value, Operator:=xlAnd, Criteria2:="<=" & tbScore2.ValueActiveSheet.ListObjects("Table2").Range.AutoFilter Field:=5, Criteria1:= _
">=" & tbScore1.Value, Operator:=xlAnd, Criteria2:="<=" & tbScore2.Value
For Each cbRange In Range("A2:A" & LR).SpecialCells(xlCellTypeVisible)
Me.cbName.AddItem cbRange.Value
Next cbRange
ActiveSheet.AutoFilterMode = False
ActiveSheet.ShowAllData
End Sub