更新:做了一些研究,现在有了下面的代码
今天,您编码神灵已经为我提供了很多帮助,所以这是我以前从未在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
我不确定该怎么做。我已经创建了表,但是我没有使用太多表单控件。
实际上,这将是工作表本身内的微型可滚动窗口,其中包含一小部分数据。请让我知道这是否有意义,以及您是否有任何建议/建议/技巧。谢谢!