相关文章:VBA 用户窗体列表框 - 运行时错误 380。无法设置列表属性。属性值无效
@taller 帮助我简化了用于在列表框中搜索记录的命令按钮代码。我以为我可以将这些知识转移到初始化过程中,但我没有任何运气。我很新,所以我欢迎更多的解释/评论。下面显示了 OLD 代码和我对 NEW 代码的尝试,但该代码不起作用。预先感谢您的考虑!
Private Sub UserForm_Initialize()
'redacted code here
'Add items to combobox list. Each list item MUST match their respective column header.
cboSearchItem.List = Array("Shop Order", "Suffix", "Proposal", "PO", "SO", "Quote", _
"Transfer Order", "Customer Nickname", "End User Nickname") '1-dimensional array
************OLD*****************
lstMaster.ColumnWidths = "0;0;40;48;108;0;0;0;0;0;0;0;0;50;0;0;0;0;0;0;0;0;72;0;0;0;0;0;0;0;0;0;50;35;0;0;0;0;0;0;45;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;100;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;100;0;0"
lstMaster.ColumnCount = 125 'Number of total columns
lstMaster.List = Sheets("Master").Range("A4:DU" & Sheets("Master").Cells(Rows.Count, 1).End(xlUp).Row).Value
********************************************
************NEW****************
Const COL_WIDE = "40;48;108;50;72;50;35;45;100;100"
Const COL_INDEX = "3;4;5;14;23;33;34;41;96;121" ' Column numbers that appear in ListBox
Const START_ROW = 4 ' the first data row
Dim aIndex
aIndex = Split(COL_INDEX, ";")
Dim ColCnt As Long
ColCnt = UBound(aIndex) + 1
With lstMaster
.Clear
.ColumnCount = ColCnt
.ColumnWidths = COL_WIDE
.List = Sheets("Master").Range("A4:DU" & Sheets("Master").Cells(Rows.Count, 1).End(xlUp).Row).Value
End With
**********************************************
'redacted code here
End With
请替换并添加代码行如下:
Sub ReplaceCodeLines()
'your existing code
'.........
'replace:
'Const COL_INDEX = "3;4;5;14;23;33;34;41;96;121"
'with
Dim aIndex(): aIndex = Array(3, 4, 5, 14, 23, 33, 34, 41, 96, 121)
'add the next code:____________________________________________________
Dim arr, wsM As Worksheet
Set wsM = ActiveSheet ' sheets("Master")
arr = wsM.Range("A4:DU" & wsM.cells(rows.count, 1).End(xlUp).row).value
arr = Application.index(arr, Evaluate("row(1:" & UBound(arr) & ")"), aIndex) 'array containing only chosen columns
'______________________________________________________________________
'replace
'.List = Sheets("Master").....
'with
'List = arr
''your existing code
'...........
End Sub