資料驗證下拉選單預設需點擊儲存格右側箭頭才展開。若要選取儲存格即自動展開下拉選單,可用 VBA Worksheet_SelectionChange 事件配合 Application.SendKeys "%{DOWN}" 模擬 Alt+下鍵。適用於高頻重複輸入場景,大幅提速。
Sheet1)Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' 僅在 C 欄(3) 和 D 欄(4) 觸發
If Target.Column = 3 Or Target.Column = 4 Then
Application.SendKeys "%{DOWN}"
End If
End Sub

Target.Column = 3:第 3 欄 (C欄),可改為需自動展開的欄號Or Target.Column = 4:可擴展多欄,或用 Select Case 管理多欄Application.SendKeys "%{DOWN}":模擬 Alt+下鍵 (展開驗證清單)Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case Target.Column
Case 3, 4, 5, 7 ' C、D、E、G 欄
Application.SendKeys "%{DOWN}"
Case 10 To 15 ' J 到 O 欄
Application.SendKeys "%{DOWN}"
End Select
End Sub
| 問題 | 說明 | 緩解方案 |
|---|---|---|
| SendKeys 不穩定 | 若使用者剛好按鍵/切換視窗,按鍵可能發送錯誤目標 | 僅在高頻輸入表單啟用,平時關閉巨集或移除代碼 |
| 觸發過於頻繁 | 每次選取儲存格都觸發,可能干擾複製/格式刷等操作 | 加入判斷:If Target.CountLarge > 1 Then Exit Sub (僅單一儲存格觸發) |
| 保護工作表衝突 | 保護後 SelectionChange 可能不觸發 | 在保護前設定 UserInterfaceOnly:=True |
| Mac/Excel Online/Web 不支援 | VBA 不相容 | 改用資料驗證原生下拉,接受手動點擊 |
=UNIQUE(範圍) 做來源,自動去重更新If Target.CountLarge > 1 Then Exit Sub 避免區域選取誤觸發