ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求大神精简代码啊

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-4-23 09:56 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
昨天看到论坛的分享贴,改写的代码。原链接是http://club.excelhome.net/thread-1572930-1-1.html
改写后实现1、页码是否奇偶页不同,2、是否顺延加页码的功能。

感觉代码有些繁琐,求论坛里精简。不会引用函数啊。


  1. Sub 分节页码()
  2.     Dim i&, j&, k&, l&
  3.    

  4. If MsgBox("是:奇偶页码相同(否:奇偶页码不同)?", 4 + 48) = vbYes Then l = 1

  5.    
  6.   If l = 1 Then
  7.    
  8.     If MsgBox("是:页码每节顺延(否:页码每节初始)?", 4 + 48) = vbNo Then k = 1


  9.     With ActiveDocument
  10.         j = .Sections.count

  11.         '第1节:封面,无页码!
  12.         With .Sections(1)
  13.             .Footers(wdHeaderFooterPrimary).Range.Delete
  14.             .Headers(wdHeaderFooterPrimary).Range.ParagraphFormat.Borders(wdBorderBottom).LineStyle = wdLineStyleNone
  15.         End With

  16.         '第2节:目录,有页码!格式:罗马数字
  17.         With .Sections(2).Footers(wdHeaderFooterPrimary)
  18.             .LinkToPrevious = False
  19.             .Range.Delete
  20.             With .PageNumbers
  21.                 .NumberStyle = wdPageNumberStyleUppercaseRoman
  22.                 .RestartNumberingAtSection = True
  23.                 .StartingNumber = 1
  24.                 .Add PageNumberAlignment:=wdAlignPageNumberCenter, FirstPage:=True
  25.             End With
  26.             '*********************************
  27.             With .Range.Font
  28.                 .NameAscii = "Times New Roman"
  29.                 .Size = 9
  30.                 .Bold = False
  31.                 .ColorIndex = wdBlack
  32.             End With
  33.         End With

  34.         '第3节:正文,有页码!格式:-1-
  35.         For i = 3 To j
  36.             With .Sections(i).Footers(wdHeaderFooterPrimary)
  37.                 If k = 1 Then
  38.                     .LinkToPrevious = False
  39.                 Else
  40.                     .LinkToPrevious = True
  41.                 End If
  42.                 .Range.Delete
  43.                 With .PageNumbers
  44.                     .NumberStyle = wdPageNumberStyleNumberInDash
  45.                     If k = 1 Then
  46.                         .RestartNumberingAtSection = True
  47.                     Else
  48.                         .RestartNumberingAtSection = False
  49.                     End If
  50.                     .StartingNumber = 1
  51.                     .Add PageNumberAlignment:=wdAlignPageNumberCenter, FirstPage:=True
  52.                 End With
  53.                 '*********************************
  54.                 With .Range.Font
  55.                      .NameAscii = "Times New Roman"
  56.                      .Size = 9
  57.                      .Bold = False
  58.                      .ColorIndex = wdBlack
  59.                 End With
  60.             End With
  61.         Next
  62.         If k = 0 Then
  63.             With .Sections(3).Footers(wdHeaderFooterPrimary)
  64.                 .LinkToPrevious = False
  65.                 With .PageNumbers
  66.                     .RestartNumberingAtSection = True
  67.                     .StartingNumber = 1
  68.                 End With
  69.             End With
  70.         End If
  71.     End With
  72.    
  73. Else
  74.   
  75.       If MsgBox("是否顺延页码(否则每节重排)?", 4 + 48) = vbNo Then k = 1


  76.     With ActiveDocument
  77.         j = .Sections.count
  78.         
  79.     .Sections.PageSetup.OddAndEvenPagesHeaderFooter = False


  80.         '第1节:封面,无页码!
  81.         With .Sections(1).Footers(wdHeaderFooterPrimary)
  82.             .Range.Delete
  83.             .Range.ParagraphFormat.Borders(wdBorderBottom).LineStyle = wdLineStyleNone
  84.         End With
  85.         
  86.          With .Sections(1).Footers(wdHeaderFooterPrimary)
  87.             .Range.Delete
  88.             .Range.ParagraphFormat.Borders(wdBorderBottom).LineStyle = wdLineStyleNone
  89.         End With

  90.         '第2节:目录,有页码!格式:罗马数字
  91.         With .Sections(2).Footers(wdHeaderFooterPrimary)
  92.             .LinkToPrevious = False
  93.             .Range.Delete
  94.             With .PageNumbers
  95.                 .NumberStyle = wdPageNumberStyleUppercaseRoman
  96.                 .RestartNumberingAtSection = True
  97.                 .StartingNumber = 1
  98.                 .Add PageNumberAlignment:=wdAlignPageNumberOutside, FirstPage:=True
  99.             End With
  100.             '*********************************
  101.             With .Range.Font
  102.                 .NameAscii = "Times New Roman"
  103.                 .Size = 9
  104.                 .Bold = False
  105.                 .ColorIndex = wdBlack
  106.             End With
  107.         End With

  108.         '第3节:正文,有页码!格式:-1-
  109.         For i = 3 To j
  110.             With .Sections(i).Footers(wdHeaderFooterPrimary)
  111.                 If k = 1 Then
  112.                     .LinkToPrevious = False
  113.                 Else
  114.                     .LinkToPrevious = True
  115.                 End If
  116.                 .Range.Delete
  117.                 With .PageNumbers
  118.                     .NumberStyle = wdPageNumberStyleNumberInDash
  119.                     If k = 1 Then
  120.                         .RestartNumberingAtSection = True
  121.                     Else
  122.                         .RestartNumberingAtSection = False
  123.                     End If
  124.                     .StartingNumber = 1
  125.                     .Add PageNumberAlignment:=wdAlignPageNumberOutside, FirstPage:=True
  126.                 End With
  127.                 '*********************************
  128.                 With .Range.Font
  129.                     .NameAscii = "Times New Roman"
  130.                     .Size = 9
  131.                     .Bold = False
  132.                     .ColorIndex = wdBlack
  133.                 End With
  134.             End With
  135.         Next
  136.         If k = 0 Then
  137.             With .Sections(3).Footers(wdHeaderFooterPrimary)
  138.                 .LinkToPrevious = False
  139.                 With .PageNumbers
  140.                     .RestartNumberingAtSection = True
  141.                     .StartingNumber = 1
  142.                 End With
  143.             End With
  144.         End If
  145.     End With
  146.   
  147.   
  148.   
  149.   End If
  150.       
  151. End Sub
复制代码





TA的精华主题

TA的得分主题

发表于 2021-4-23 22:50 | 显示全部楼层
楼主,你有什么需求?请详细说一说,如果有附件更好。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-23 22:25 , Processed in 0.024472 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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