VBA:ComboBox只显示Workbook_Open事件后的一个项目
我试图有一个Workbook_Open
事件填充控件combobox,以便当用户转到Worksheet("Benchmarking")
,他们有一个预填充列表可供select,其中包括数组datesArr
中的所有项目。
我遇到的问题是,打开电子表格并导航到Worksheet("Benchmarking")
,我只在下拉列表中看到一个项目:
如果我select那个项目然后列表实际上填充:
预期结果:
我希望从第一次用户试图进行select不仅仅是在ComboBox1_Change
事件被激发之后,完整列表才可用。
审查了许多后,例如有时ActiveXcombobox只显示一行,为什么? , 在WorkBook打开combobox我已经尝试了几种不同的方法,包括Workbook_Open
事件代码中的以下内容:
.ListFillRange = "DropDownDates" .List = DateArrToStrAr
我也打了添加项目到ComboBox1arrays。 每次我在下拉结果中获得相同的1个可见项目。
有人能告诉我哪里错了吗?
我目前的代码是
1) ThisWorkbook
Private Sub Workbook_Open() With Worksheets("Benchmarking").OLEObjects("ComboBox1").Object .Clear .List = DateArrToStrArr ' End With End Sub
2) 工作表(“标杆pipe理”) :
Private Sub ComboBox1_Change() 'QH 2/11/17 Dim datesArr() As String Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("Lkup") datesArr = DateArrToStrArr 'function that reads a named range of dates and converts to string to avoid dd/mm becoming mm/dd If ComboBox1.Value = vbNullString Then ComboBox1.Value = "01/04/2016" ComboBox1.List = datesArr '.....other code End Sub
笔记:
数组datesArr
由DateArrToStrArr()
函数填充,该函数读取date"DropDownDates"
(工作簿范围)的命名范围,并将它们转换为string数组。 然后分配给combobox。
DropDownDates
是一个dynamic命名范围,公式=OFFSET(Lkup!$F$16,,,Lkup!$M$12,)
设置:Excel 2016 64位Windows。
感谢@CLR让我思考recalcs。 我决定用下面的方法解决这个问题:
我在Worksheet("Benchmarking")
了一个Worksheet_Activate
事件,并删除了Workbook_Open代码。 这似乎是诀窍
Private Sub Worksheet_Activate() ' ComboBox1.Clear ComboBox1.List = DateArrToStrArr End Sub