【问题标题】:Excel ActiveX Combobox shows previous selection when losing focusExcel ActiveX 组合框在失去焦点时显示先前的选择
【发布时间】:2017-12-12 04:13:21
【问题描述】:

我有这段代码,它用 Sheet2 上 Table1 的 Name 列填充 Sheet1 上的组合框。

Public Sub Worksheet_Activate()
   Me.ComboBox1.List = Worksheets("Sheet2").ListObjects("Table1")_
   .ListColumns("Name").DataBodyRange.Value
End Sub

工作正常,但是当我在工作表上单击组合框时会产生奇怪的效果。框中选定的条目快速闪烁到上一个条目。例如,当前选中的项目是“b”,然后我选择“c”。如果我单击工作表,则框中的条目会快速闪烁到“b”,然后再返回“c”。

我已将这段代码单独放在一个新文件中,但效果仍然相同。有没有其他人看过这个?

编辑公开订阅的原因:

忘记包含 Workbook_Open 代码,以便在您打开工作簿时将 Sheet1 视为已激活。但不管我是否保留那个代码,我仍然可以看到效果。

Private Sub Workbook_Open()
Call ActiveSheet.Worksheet_Activate
End Sub

【问题讨论】:

  • 即使没有 VBA 代码也会发生在我身上,所以我猜你会坚持下去
  • 这很烦人。我搜索并没有看到其他人之前提到它。这就是让我烦恼的事情。
  • 不知道为什么它是公共子,但我在 Excel 2010 上没有看到这种现象。您的代码在 Sheet1 对象中?
  • 是的,它在 Sheet1 中。这是 Excel 365。我忘记包含调用 Worksheet_Activate 的 Workbook_Open 代码。这就是为什么它是公共的。否则,当您第一次打开工作表时,它不会被视为已激活,因此您不会获得下拉列表。

标签: excel vba combobox


【解决方案1】:

使用代码添加LostFocus 事件以选择工作表上的单元格应该会导致在更改组合框的值后选择单元格时不会发生闪烁。

如下:

Private Sub ComboBox1_LostFocus()
    ActiveSheet.Range("A1").select
End Sub

【讨论】:

    猜你喜欢
    • 2021-11-09
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    相关资源
    最近更新 更多