使用excel vba根据条件填充组合框

时间:2013-11-01 19:24:43

标签: excel vba combobox foreach auto-populate

请帮助!我需要在今天结束时(2013年4月11日)完成! 我一直试图以各种不同的方式弄清楚这个问题,我无法弄明白。需要帮助!

我有一系列用户表单,用户可以使用这些表单来选择从电子表格中读取数据的某些条件,最终生成最终列表框用户表单中的信息列表。在一个userform(ScoreRange)中,要求用户在两个单独的列表框中键入两个数字(tbScore1和tbScore2),然后一旦输入两个分数并单击标有“OK”的命令按钮,下一个用户窗体将打开一个组合框(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 个答案:

答案 0 :(得分: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