Excel “安基”;删除“;清除组合框

Excel “安基”;删除“;清除组合框,excel,vba,combobox,Excel,Vba,Combobox,我有一个带有多个组合框的用户表单。用户可以键入新项目或从列表中选择一个项目 他可以开始键入所需项目的首字母,但当他犯了错误,以“b”而不是“n”开头时,他必须手动清除组合框,或使用鼠标或箭头在列表中查找项目 我想使用delete键快速清除该框,以便用户可以再次开始键入。但如果这行代码正确的话,我不知道该把它放在哪里(输入事件、更改事件,或者其他什么?) 首先Excel需要知道用户在哪个框中,然后清除它 我试图用一个变量创建单独的模块,该变量找出当前的组合框名称,并在下一步中清除它。但我不知道下面

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

他可以开始键入所需项目的首字母,但当他犯了错误,以“b”而不是“n”开头时,他必须手动清除组合框,或使用鼠标或箭头在列表中查找项目

我想使用delete键快速清除该框,以便用户可以再次开始键入。但如果这行代码正确的话,我不知道该把它放在哪里(输入事件、更改事件,或者其他什么?)

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

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

Sub WyczyscPole()

Dim NazwaPola As ComboBox

NazwaPola = frmZakupy.ActiveControl.Name
NazwaPola.Clear

End Sub

请尝试:
frmZakupy.value='


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

当用户在组合框中时,可以使用KeyDown事件捕获删除键(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

谢谢你,很有魅力。你能告诉我你为什么使用按键事件吗?难道不是按键吗?这会有不同吗?我不知道为什么,但KeyPress不能捕捉像Delete和Backspace这样的键,所以你必须使用KeyDown(或KeyUp)。
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