![Excel VBA 巨集可根據選擇建立自訂清單](https://rvso.com/image/1366010/Excel%20VBA%20%E5%B7%A8%E9%9B%86%E5%8F%AF%E6%A0%B9%E6%93%9A%E9%81%B8%E6%93%87%E5%BB%BA%E7%AB%8B%E8%87%AA%E8%A8%82%E6%B8%85%E5%96%AE.png)
您好,我想知道是否有人可以幫助我建立一個宏,將一個選項新增到 Excel 自訂清單中。通常,要執行此操作,我會在一列中選擇一系列行,然後進入檔案、選項、進階並捲動到最底部,然後按一下「編輯自訂清單」。當巨集創建器打開時,我得到的只是一個非常簡單的腳本,與我選擇的特定單元格相關。我想調整程式碼,以便它使用我目前選擇添加到自訂清單中的任何內容。這樣我就不會總是被 J4-J9 系列所束縛。下面是我收到的程式碼。
Sub Customlistadd()
'
' Customlistadd Macro
'
' Keyboard Shortcut: Ctrl+Shift+I
'
Application.AddCustomList ListArray:=Range("J4:J8")
End Sub
就像添加當前選擇來代替 j4:j8 一樣簡單嗎?如果是的話我該怎麼寫呢?我首先需要聲明一個變數類型來保存當前部分嗎?我看過的幾乎所有範例似乎都試圖按照我正在嘗試做的事情去做一些事情,傾向於使用變數來保存當前的選擇範圍。謝謝。
答案1
更改程式碼以使用該Selection
對象,該對象將始終包含目前選定的單元格(如果選擇了多個單元格)。 IE
Application.AddCustomList Selection
並確保您的自訂清單僅包含字母,而不包含數字。例如 A,B,C,D,E,F,G,... 或 A1,A2,A3,A4,A5,A6,... 都可以,但 1,2,3,4,5 不行。
答案2
嘗試這個
Public Sub CreateCustomList()
Dim v As Variant
Dim rng As Excel.Range
Set rng = ActiveSheet.Range("A1:A3")
'Transpose from 2 dim array to 1 dim array
v = Application.Transpose(Selection)
'Add the custom list
Application.AddCustomList v
End Sub
答案3
嘗試使用新增、取得和刪除自訂清單。提示:空白儲存格視為可數順序,請勿使用空白儲存格
Sub CoustomList()
Dim Arr() As Variant
Dim N As Long
Application.AddCustomList ListArray:=Sheet1.Range("A2:A4")
Arr = Sheet1.Range("A2:A4")
N = Application.GetCustomListNum(Arr)
Application.DeleteCustomList N
End Sub