ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 651|回复: 0

[原创] Word VBA:多级编号的设置

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-3-19 19:55 | 显示全部楼层 |阅读模式
本帖最后由 守候_CJ 于 2023-3-20 04:25 编辑

一、需要达到的效果
  • 文档中样式“标题 1”到“标题 9”分别链接到相应级别列表
  • 各级列表与文字间不用默认的制表符连接,而用空格连接
  • 完成对激活文档(当前文档)光标所选区域符合要求的标题段落(样式为“标题 n”的段落)应用此列表


多级列表目标效果
二、代码

  1. Sub 多级列表()
  2.     Dim numFormatStr As String
  3.     Dim i As Byte
  4.     Dim doc As Document
  5.     Dim listTemp As Word.ListTemplate
  6.    
  7.     Set doc = ActiveDocument
  8.     Set listTemp = Word.Application.ListGalleries(wdOutlineNumberGallery).ListTemplates(1)
  9.    
  10.     For i = 1 To 9
  11.         numFormatStr = numFormatStr & ".%" & i
  12.         If Left(numFormatStr, 1) = "." Then
  13.             numFormatStr = Mid(numFormatStr, 2)
  14.         End If
  15.         
  16.         With listTemp.ListLevels(i)
  17.             .NumberFormat = numFormatStr
  18.             .TrailingCharacter = Word.WdTrailingCharacter.wdTrailingSpace
  19.             .NumberStyle = Word.WdListNumberStyle.wdListNumberStyleArabic
  20.             .NumberPosition = CentimetersToPoints(0)
  21.             .Alignment = Word.WdListLevelAlignment.wdListLevelAlignLeft
  22.             .TextPosition = CentimetersToPoints(0)
  23.             .ResetOnHigher = i - 1
  24.             .StartAt = 1
  25.             .LinkedStyle = "标题 " & i
  26.             With .Font
  27.                 .name = doc.Styles("标题 " & i).Font.name
  28.                 .NameFarEast = doc.Styles("标题 " & i).Font.NameFarEast
  29.                 .Size = doc.Styles("标题 " & i).Font.Size
  30.                 .Bold = doc.Styles("标题 " & i).Font.Bold
  31.                 .Italic = doc.Styles("标题 " & i).Font.Italic
  32.             End With
  33.         End With
  34.     Next
  35.    
  36.     For Each pa In Selection.Paragraphs
  37.         If pa.Style.NameLocal Like "标题 #" Then
  38.             pa.Range.ListFormat.ApplyListTemplateWithLevel _
  39.                 ListTemplate:=listTemp, _
  40.                 ContinuePreviousList:=True, _
  41.                 ApplyTo:=wdListApplyToWholeList, _
  42.                 DefaultListBehavior:=wdWord10ListBehavior
  43.         End If
  44.     Next
  45.    
  46.     Set doc = Nothing
  47.     Set listTemp = Nothing
  48. End Sub
复制代码




评分

2

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-22 15:21 , Processed in 0.042414 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表