ddCustomList 方法
为自定义自动填充和/或自定义排序添加自定义列表。
语法:AddCustomList(ListArray, ByRow)
ListArray 必选 ,将源数据指定为字符串数组或 Range 对象。
ByRow 可选,仅当 ListArray 为 Range 对象时使用。
如果为 True,则使用区域中的每一行创建自定义列表;
如果为 False,则使用区域中的每一列创建自定义列表。
如果省略该参数,并且区域中的行数比列数多(或者行数与列数相等),则使用每一列创建。
如果省略该参数,并且区域中的列数比行数多,则使用每一行创建。
说明:如果要添加的列表已经存在,则本方法不起作用,并且会产生运行错误。
如果在实际中是使用Range做为ListArray参数,最好明确指明Byrow。
在技巧中自行添加自定义序列时,多区域(多行多列情况)下,当点击导入时会有行列选择对话框(如下图)。
示例:
Dim i As Byte
On Error GoTo ErrorHandler
'为避免重复运行导致的错误,这里做了错误处理。
'当产生错误时,直接跳转到Errorhandler处继续执行
'这样就不会产生一个错误对话框
'当然,这个在某些设置下还是会有错误提示对话框的
'工具-选项-通用-错误捕获
'建议选择 遇到未处理的错误时中断
'设置见下图
Application.ScreenUpdating = False
For i = 1 To 26
Cells(i, 1).Value = Chr(i + 64)
Next
Application.AddCustomListRange('a1:a26'), byrow:=False
Application.ScreenUpdating = True
MsgBox '字母自定义序列添加完成',vbInformation
Exit Sub
ErrorHandler:
MsgBox '自定义序列已经存在'
GetCustomListContents 方法
返回一个自定义序列(一个字符串数组)。
语法:GetCustomListContents(ListNum)
ListNum 必选 Long 列表数字。
示例:
Dim i As Byte,arr
For i = 1 To Application.CustomListCount
arr = Application.GetCustomListContents(i)
'返回的是一维数组
Debug.Print '自定义序列 ' & i & vbCr & Join(arr, ',')
'MsgBox '自定义序列 ' & i& vbCr & Join(arr, ',')
'数组转化为字符串
Next
立即窗口截图:
GetCustomListNum 方法
返回字符串数组的自定义序列号。
使用本方法既可对内置序列进行匹配,也可对自定义序列进行匹配。
语法:GetCustomListNum(ListArray)
ListArray 必选 Variant 字符串数组。
返回值:Long
说明:如果没有对应序列,则使用本方法将出错。
示例:
Dim arr(1 To 26) As String
'声明一个字符串数组变量
Dim i As Byte
For i = 1 To 26
arr(i) = Chr(64 + i)
'chr函数根据指定的字符代码生成对应的字符
Next
On Error Resume Next
'当一个运行时错误发生时,代码继续往下接着执行。
i = Application.GetCustomListNum(arr)
If Err.Number <> 0 Then
'当产生错误时,Err对象的Number不等于0
MsgBox '指定的自定义序列不存在'
Else
MsgBox '指定的自定义序列编号为:' & i
End If
DeleteCustomList 方法
删除一个自定义序列。
语法:DeleteCustomList(ListNum)
ListNum 必选,Long 自定义序列数字。
此数字必须大于或等于 11(Excel 2010中有11个内置的自定义序列无法删除)。
说明:如果列表数字小于11 或者没有匹配的自定义序列,则使用本方法将产生错误。
这里的自定义序列号可以利用上面的GetCustomListNum方法获取
示例1:
沿用GetCustomListNum示例,添加2行稍微改动即可。
Dim arr(1 To 26) As String
'声明一个字符串数组变量
Dim i As Byte
For i = 1 To 26
arr(i) = Chr(64 + i)
'chr函数根据指定的字符代码生成对应的字符
Next
On Error Resume Next
'当一个运行时错误发生时,代码继续往下接着执行。
i = Application.GetCustomListNum(arr)
If Err.Number <> 0 Then
'当产生错误时,Err对象的Number不等于0
MsgBox '指定的自定义序列不存在'
Exit Sub
End If
Application.DeleteCustomList (i)
MsgBox '删除完成'
示例2:
Dim i As Byte
On Error GoTo ErrorHandler
For i = 1 To Application.CustomListCount
Application.DeleteCustomList (i)
Next
Exit Sub
ErrorHandler:
Debug.Print '自定义序列 ' & i & ' 删除失败'
Resume Next
帮助中提到的是5个不可以删除,经测试在Excel 2010中一共是11个内置的无法删除。
友情提示:帮助不是百分百准确的,尽量自己敲代码去检验
联系客服