select选项后,VBA Excelcombobox不显示值

Private Sub ComboBox1_DropButtonClick() If ComboBox1.ListCount > 0 Then ActiveSheet.ComboBox1.Clear End If For N = 1 To ActiveWorkbook.Sheets.Count - 1 ComboBox1.AddItem ActiveWorkbook.Sheets(N).Name Next N End Sub 

我是VBA新手,请耐心等待。 我可能不是这样做的最好的方式开始。

代码是取我的工作簿中的每张表的名称(除了最后一张表),并将它们添加到combobox列表中。 起初,每当我点击下拉菜单时,所有图纸名称都会再次被添加,使得每次点击都会继续增加列表。 我的补救措施是每次点击清除combobox,并重新填充。

但是,如果使用了明确的选项,则在进行select时不会显示该值。 当不使用清除选项时显示正常。 其他一切仍然有效,但我需要它来显示选定的值,以便用户不会感到困惑。

有没有更好的方法来完成我所需要的?

编辑:如果它很重要,这不是在用户的forms,它只是一个活跃的xcombobox直接位于工作表上。

这是一个非常奇怪的行为 – 但是当您select列表中的项目时,会再次触发DopButtonClick事件。 因此,刚刚分配的值在第二次清除.Clear时清除。

这段代码修复了它:

 Private Sub ComboBox1_DropButtonClick() Dim strValue As String Dim n As Integer strValue = ComboBox1.Value If ComboBox1.ListCount > 0 Then ActiveSheet.ComboBox1.Clear End If For n = 1 To ActiveWorkbook.Sheets.Count - 1 ComboBox1.AddItem ActiveWorkbook.Sheets(n).Name Next n ComboBox1.Value = strValue End Sub 

像下面的东西会工作。 但是,我会质疑为什么每次有人点击它时,都要重新combobox。 为什么不打开工作簿或激活工作表?

 Private Sub ComboBox1_DropButtonClick(ComboBox1 As ComboBox) Dim strSelected As String If ComboBox1.ListIndex > -1 Then strSelected = ComboBox1.List(ComboBox1.ListIndex) End If If ComboBox1.ListCount > 0 Then ActiveSheet.ComboBox1.Clear End If For N = 1 To ActiveWorkbook.Sheets.Count - 1 ComboBox1.AddItem ActiveWorkbook.Sheets(N).Name If strSelected = ActiveWorkbook.Sheets(N).Name Then ComboBox1.ListIndex = N - 1 End If Next N End Sub