从Excel工作表填充列表框

时间:2015-08-02 15:48:21

标签: excel-vba vba excel

美好的一天,我有一个userform列表框,我使用下面的代码来填充,该程序假设搜索包含特定搜索条件数据的每一行。  该程序的目的是将数据从用户表单添加到工作表,工作表将存储名称,日期,金额,用户名称和添加条目的日期将存储在列“H”中。  当我运行代码时,列表框仅填充连续序列中的项目,例如。  我的表格看起来像这样

 名称|总金额|日期| UsernameDate |
 Name1 | 254.36 | 2015年7月28日|名1 / 28JUL2015
 Name1 | 101.25 | 28Jul2015 |名1 / 28JUL2015
 Name2 | 99.58 | 2015年7月28日|名称2 / 28JUL2015
 Name1 | 698.36 | 2015年7月28日| NAME1 / 28JUL2015

如果我想用Name2填充列表框,它会出现空白,如果我想用name1填充列表框,它只会填充前两行,但不会填充最后一行,也就是name1项。

 Workbooks(ThisWorkbook.Name).Worksheets("Sheet1").Visible = True
 Workbooks(ThisWorkbook.Name).Worksheets("Sheet1").Select
 NumberofRows = Range("A2:J500", Range("A2").End(xlDown)).Rows.Count
 Range("A2").Activate
 If IsEmpty(ActiveCell) Then
 Workbooks(ThisWorkbook.Name).Worksheets("Sheet1").Visible    =xlSheetVeryHidden
 Application.ScreenUpdating = True
 Exit Sub
 End If

 On Error Resume Next


 strAgentReport = Me.cboUser & "/" & UCase(Format(Me.txtDate, "dd-mmm-yy"))

 Set rRange = Workbooks(ThisWorkbook.Name).Worksheets("Sheet1").UsedRange

 Set rCell = rRange.Cells(1, 8)

 lOccur = WorksheetFunction.CountIf(rRange.Columns(8), strAgentReport)

 If lOccur > 0 Then
 Set rCell = rRange.Columns(8).Find(What:=strAgentReport, After:=rCell, _
 LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, _
 SearchDirection:=xlNext, MatchCase:=False)
 rCell(2, -8).Activate




 For x = 1 To NumberofRows
 i = x - 1
 If ActiveCell(1, 8) = strAgentReport Then
 listbox1.AddItem (ActiveCell)
 listbox1.List(i, 1) = ActiveCell(1, 4)
 listbox1.List(i, 2) = ActiveCell(1, 5)
 listbox1.List(i, 3) = ActiveCell(1, 9)
 listbox1.List(i, 4) = ActiveCell(1, 6)
 listbox1.List(i, 5) = ActiveCell(1, 7)
 listbox1.List(i, 6) = ActiveCell(1, 10)
 listbox1.List(i, 7) = ActiveCell(1, 2)
 listbox1.List(i, 8) = ActiveCell(1, 3)
 ActiveCell.Offset(1, 0).Activate
 If IsEmpty(ActiveCell) Then Exit For
 End If

 Next

 End If

任何帮助将不胜感激

0 个答案:

没有答案