使用 listbox.List 克服了使用 listbox.RowSource 所产生的问题,如 使用 vba 隐藏/取消隐藏 Excel 工作表行的不稳定列表框
但是,RowSource 至少提供了对标题的访问以及在调整参考工作表后自动更新列表框的数据。我通过在列表框上方创建标签设法克服了列表框中标题的丢失。但 RowSource 还与列表框同步数据更新。列表属性则不然。因此,当从用户窗体更新工作表时,我现在需要更新列表框中更改的数据。我正在努力寻找做到这一点的方法。
我尝试过但没有成功,使用 vba 的 WatchWindow 提供一些线索作为我的列表框属性所需的访问和更改每个 listbox.column 的值。
谢谢
'''' extracted from userform initialization ''''
shtRow = X ‘ Worksheet row determined by numerous means
LdRow = X - 4 ‘listDiners equivalent row number
'''' extracted from listbox's initialization sub
With listDiners
.ColumnCount = 7
.ColumnWidths = “46, 65, 74, 60, 118, 168, 168”
.List = shtMeals.Range(“tblDiners”).Value
End With
Sub UpdateRecord
For c = 2 to 7
worksheet.Cells(shtRow, c) = userform input value '' update worksheet record ''
listDiners.Selected(LdRow, c) = userform input value '' update listbox equivalent column
Next c
您的输入范围本质上是一个二维数组,就像列表框的
List
属性 - 您可以以类似的方式更新两者。
例如列表:
listDiners.List(rowNumber, colNumber) = "hello"
注意
List
的行/列索引是从 0 开始的,而源范围是从 1 开始的。