使用Excel VBA将表数据插入列表框

时间:2019-11-05 20:58:26

标签: excel vba

更新:做了一些研究,现在有了下面的代码

今天,您编码神灵已经为我提供了很多帮助,所以这是我以前从未在Excel VBA中做过的事情的另一个问题:

我有一些代码可以从主表中选择值,创建一个较小的临时表,然后对该表进行排序。这很简单,但是我真正想做的是将这些值添加到表单控件列表框。到目前为止,我的代码如下:

Sub Tester()

    Dim dateSel As Variant
    Dim sevLev, i, rw As Integer
    Dim dRange, keyRange, listRange As Range
    Dim listArray() As String

    sevLev = 1
    dateSel = "12/4/2019"

    With Sheets("All_Risk_Report")
        .Range("A1").AutoFilter _
            field:=2, _
            Criteria1:=dateSel
        .Range("A1").AutoFilter _
            field:=13, _
            Criteria1:=sevLev
    End With

    Sheets("All_Risk_Report").Range("A1:AZ50000").SpecialCells(xlCellTypeVisible).Copy

    Sheets.Add Before:=ActiveSheet
    ActiveSheet.Name = "TempTable2"

    Sheets("All_Risk_Report").Range("F:F").SpecialCells(xlCellTypeVisible).Copy
    Sheets("TempTable2").Cells(1, 1).PasteSpecial

    Sheets("All_Risk_Report").Range("C:C").SpecialCells(xlCellTypeVisible).Copy
    Sheets("TempTable2").Cells(1, 2).PasteSpecial

    Sheets("All_Risk_Report").Range("E:E").SpecialCells(xlCellTypeVisible).Copy
    Sheets("TempTable2").Cells(1, 3).PasteSpecial

    Sheets("All_Risk_Report").Range("I:I").SpecialCells(xlCellTypeVisible).Copy
    Sheets("TempTable2").Cells(1, 4).PasteSpecial

    Sheets("All_Risk_Report").ShowAllData

    Set dRange = Sheets("TempTable2").Range("A1:D500")
    Set keyRange = Sheets("TempTable2").Range("A1:A500")

    dRange.Sort key1:=keyRange, Header:=xlYes

    Set listRange = Sheets("TempTable2").Range("A1:D500")

    With Sheets("Calendar").Shapes.Range(Array("List Box 1"))
        .Clear
        .ColumnHeads = False
        .ColumnCount = listRange.Columns.Count

        ReDim MyArray(listRange.Rows.Count, listRange.Columns.Count)

        rw = 0

        For i = 1 To listRange.Rows.Count
            For j = 0 To listRange.Columns.Count
                MyArray(rw, j) = listRange.Cells(i, j + 1)
            Next
            rw = rw + 1
        Next

        .List = MyArray

        .TopIndex = 0
    End With

End Sub

我不确定该怎么做。我已经创建了表,但是我没有使用太多表单控件。

实际上,这将是工作表本身内的微型可滚动窗口,其中包含一小部分数据。请让我知道这是否有意义,以及您是否有任何建议/建议/技巧。谢谢!

0 个答案:

没有答案