尝试自动完成ActiveX组合框时Excel崩溃

时间:2017-02-10 14:57:20

标签: excel vba excel-vba

我在工作表上有一个ActiveX Combobox控件,这是_Change事件代码

Private Sub ComboBox1_Change()
  Me.ComboBox1.ListFillRange = "ItemSearch"
  Me.ComboBox1.DropDown
End Sub

当我使用键盘上/下键移动列表时,它会自动退出Excel。

有谁知道这个问题的解决方案?我基本上想要一个动态的ComboBox。

2 个答案:

答案 0 :(得分:3)

当您更改所选选项时,您正在强制更新Combobox的可能值,
这就是它崩溃的原因。

您可以尝试在此事件中保留Me.ComboBox1.DropDown

但是.ListFillRange应该是另一个事件:

  • Workbook_Open
  • Workbook_SheetChange
  • Worksheet_SelectionChange
  • Worksheet_Change

如果您尝试使用某种自动完成行为,则可以使用内置属性

  1. 右键单击Control,单击Properties
  2. 在打开的“属性”窗口中,找到MatchEntry属性
  3. 将其设为0 - fmMatchEntryFirstLetter

答案 1 :(得分:0)

只有在未选择任何项目的情况下,我才通过设置ListFillRange来解决此问题,即

<script>
      const input = document.getElementById("recserv");
      const result = document.getElementById("result");
      function yeartot(service) {
        const checkedService = document.querySelector(":checked");
        var recserv = Number(document.getElementById("recserv").value);
        document.getElementById("result").value =
          Number(checkedService.value) * Number(input.value);
      }
    </script>

这解决了错误,并且是可取的,因为(至少在我的情况下)选择某项时范围只能有一项。因此,用户可以输入自动填充的类型,但是当他开始使用箭头时,他可以从已过滤的到目前为止的值中进行选择。

完整示例可用there。与用户输入的this often mentioned example不同,它可以过滤出与当前输入不匹配的条目