打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
跟烟花入门VBA:Application对象(六)

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 自定义序列数字。

  此数字必须大于或等于 11Excel 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个内置的无法删除。

  友情提示:帮助不是百分百准确的,尽量自己敲代码去检验


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
VBA数组基础学习
兰版VBA数组入门10讲
vba-数组学习
高效的VBA数组让你事半功倍
可以生成数组的函数,数组的处理
Excel VBA编程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服