Excel VBA 宏从选择中创建自定义列表

Excel VBA 宏从选择中创建自定义列表

嗨,我想知道是否有人可以帮助我创建一个宏,将选择添加到 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

相关内容