这是一个如何使用 VBA 制作自动完成下拉列表的解决方案:
首先,您需要在工作表中插入一个组合框并更改其属性,然后运行 VBA 代码以启用自动完成功能。
进入包含您希望自动完成的下拉列表的工作表。
在插入组合框之前,您需要启用功能区中的开发人员选项卡。
一个)。在 Excel 2010 和 2013 中,单击文件 > 选项。然后在“选项”对话框中,单击右侧窗格中的“自定义功能区”,选中“开发人员”框,然后单击“确定”按钮。
乙)。在 Outlook 2007 中,单击 Office 按钮 > Excel 选项。在 Excel 选项对话框中,单击右侧栏中的流行,然后选中功能区框中的显示开发人员选项卡,最后单击确定按钮。
然后单击 ActiveX 控件下的开发人员 > 插入 > 组合框。
在当前打开的工作表中绘制组合框并右键单击它。在右键菜单中选择属性。
通过单击开发人员 > 设计模式关闭设计模式。
右键单击当前打开的工作表选项卡,然后单击查看代码。
确保当前工作表代码编辑器已打开,然后将以下 VBA 代码复制并粘贴到其中。
从extendoffice.com借来的代码
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Update by Extendoffice: 2018/9/21
Dim xCombox As OLEObject
Dim xStr As String
Dim xWs As Worksheet
Dim xArr
Set xWs = Application.ActiveSheet
On Error Resume Next
Set xCombox = xWs.OLEObjects("TempCombo")
With xCombox
.ListFillRange = ""
.LinkedCell = ""
.Visible = False
End With
If Target.Validation.Type = 3 Then
Target.Validation.InCellDropdown = False
Cancel = True
xStr = Target.Validation.Formula1
xStr = Right(xStr, Len(xStr) - 1)
If xStr = "" Then Exit Sub
With xCombox
.Visible = True
.Left = Target.Left
.Top = Target.Top
.Width = Target.Width + 5
.Height = Target.Height + 5
.ListFillRange = xStr
If .ListFillRange = "" Then
xArr = Split(xStr, ",")
Me.TempCombo.List = xArr
End If
.LinkedCell = Target.Address
End With
xCombox.Activate
Me.TempCombo.DropDown
End If
End Sub
Private Sub TempCombo_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Select Case KeyCode
Case 9
Application.ActiveCell.Offset(0, 1).Activate
Case 13
Application.ActiveCell.Offset(1, 0).Activate
End Select
End Sub
单击文件 > 关闭并返回到 Microsoft Excel 以关闭 Microsoft Visual Basic for Application 窗口。
现在,只需单击带有下拉列表的单元格,您可以看到下拉列表显示为一个组合框,然后在框中键入第一个字母,相应的单词将自动完成。
注意:此 VBA 代码不适用于合并的单元格。
来源: 在 Excel 下拉列表中键入时如何自动完成?