嗨,我想知道是否有人可以帮助我创建一个宏,将选择添加到 excel 自定义列表中。通常,为此,我会选择一列中的一系列行,然后转到文件、选项、高级并滚动到最底部,然后单击编辑自定义列表。在打开宏创建器的情况下执行此操作时,我得到的只是一个与我选择的特定单元格相关的非常简单的脚本。我想调整代码,以便它使用我当前选择的任何内容添加到自定义列表中。这样,我就不会总是被束缚在 J4-J9 范围内。以下是我收到的代码。
Sub Customlistadd()
'
' Customlistadd Macro
'
' Keyboard Shortcut: Ctrl+Shift+I
'
Application.AddCustomList ListArray:=Range("J4:J8")
End Sub
是否像在 j4:j8 的位置添加当前选择一样简单?如果是,我该如何具体写?我是否需要先声明一个变量类型来保存当前部分?我看过的几乎所有例子似乎都在尝试做一些与我尝试做的事情,倾向于使用变量来保存当前选择范围。谢谢。
答案1
更改您的代码以使用Selection
对象,该对象将始终包含当前选定的单元格(如果选择了多个单元格)。即
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