【问题标题】:OnKey "Delete" clear comboboxOnKey“删除”清除组合框
【发布时间】:2015-04-15 11:20:48
【问题描述】:

我有一个带有多个组合框的用户表单。用户可以输入新项目或从列表中选择一项。

他可以开始输入想要的物品的第一个字母,但是当他出错并以例如开头时“b”而不是“n”,他必须手动清除组合框或使用鼠标或箭头在列表中查找项目。

我想使用删除键快速清除该框,以便用户可以再次开始输入。但是如果正确的话,我不知道将这行代码放在哪里(输入事件,更改事件,也许是其他一些?)。

Application.OnKey "{Delete}", "WyczyscPole"

首先 Excel 需要知道用户在哪个框,然后清除它。

我尝试使用一个变量创建单独的模块,该变量找出当前组合框名称并在下一步中清除它。但我不知道下面调用的 sub 是否正确。

Sub WyczyscPole()

Dim NazwaPola As ComboBox

NazwaPola = frmZakupy.ActiveControl.Name
NazwaPola.Clear

End Sub

【问题讨论】:

    标签: excel vba combobox


    【解决方案1】:

    当用户在组合框中时,您可以使用 KeyDown 事件来捕获 Delete 键 (KeyCode = 46)。

    Private Sub NazwaPola_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    
        If KeyCode = 46 Then
            Me.NazwaPola.Value = vbNullString
        End If
    
    End Sub
    

    【讨论】:

    • 谢谢你,就像一个魅力。你能告诉我你为什么使用 KeyDown 事件吗?不应该是 KeyPress 吗?会有什么不同吗?
    • 我不知道为什么,但是 KeyPress 不捕获像 Delete 和 Backspace 这样的键,所以你必须使用 KeyDown(或 KeyUp)。
    【解决方案2】:

    请尝试:frmZakupy.value=''

    最好不要在任何名称中使用“ś”、“ć”等特殊字符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-08
      • 1970-01-01
      • 2012-08-21
      • 2012-09-23
      • 1970-01-01
      • 1970-01-01
      • 2019-06-12
      • 1970-01-01
      相关资源
      最近更新 更多