如何在 Excel 下拉列表中輸入時自動完成?


當使用包含許多專案的下拉列表時,選擇其中一個會比較困難。可以使用自動完成功能來解決此問題。閱讀本教程,瞭解如何在 Excel 下拉列表中輸入時自動完成。當我們處理重複值時,自動完成可以節省大量時間。

在 Excel 下拉列表中輸入時自動完成

讓我們來看一個簡單的過程,瞭解如何在 Excel 下拉列表中輸入時自動完成。

步驟 1

考慮一個帶有下拉列表的 Excel 電子表格。要建立下拉列表,請選擇資料並單擊“資料”,然後選擇“僅允許列表”並單擊“確定”。

現在在工作表上繪製一個組合框;我們可以在開發人員選項卡下的 ActiveX 控制元件中找到它,如下圖所示。

步驟 2

現在右鍵單擊該框,選擇“屬性”,並將名稱更改為 TempCombo,如下圖所示。

步驟 3

然後關閉屬性彈出視窗,右鍵單擊工作表名稱,然後選擇“檢視程式碼”以開啟 VB 應用程式,然後將程式輸入到文字框中,如下圖所示。

程式

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Update by Nirmal
   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

現在將工作表另存為啟用宏的模板,使用“Alt + Q”命令關閉 VBA 應用程式,然後轉到工作表並透過單擊“設計模式”退出設計模式,我們的最終輸出將類似於下圖所示。

結論

在本教程中,我們使用了一個簡單的示例來演示如何在 Excel 中的下拉列表中輸入時自動完成。

更新於: 2023年1月3日

7K+ 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告