Заполните поле со списком на основе критериев с 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
Другие вопросы по тегам