Word VBA:批量删除多个分段页面

目录

一、难点分析

1.数组的应用

2.操作顺序

二、示例代码

三、操作图示

1.复制代码-运行

2.输入要删除的页码范围

3.操作完成


一、难点分析

1.数组的应用

比如,输入多个区间【1,5-10,21-28】,如何循环这些区间。

这里主要是:

(1)将用户输入的需要删除的区间通过split函数用逗号(,)进行分割后存储在一个数组arr中;

(2)从arr的最大下标(最后一个)循环到arr的最小下标(第一个),每次循环的结果通过split函数用“-”分隔,存入数组brr中;

(3)i从brr(1)的值循环到brr(0)的值,删除i对应的页面。

注意:这里需要判断一下,如果arr中的元素本身没有“-”,即分割出的brr中有一个元素brr(0),此时需要让brr(1)也等于brr(0)。否则,brr(1)不存在,会报错。

2.操作顺序

删除尽量从后面向往前面操作,以免出现不必要的错误

二、示例代码

Sub 删除页()
    Dim i As Long
    Dim j As Long
    Dim k As Long
    Dim pg As Range
    Dim arr, brr
    Dim prmt As String
    
    On Error GoTo err1
    
    Application.ScreenUpdating = False
    
    prmt = "请输入需要各部分删除的页码范围(页码从小到大,且每部分不能重叠)," & vbCrLf & _
        "每部分首尾用【-】连接,各部分之间用逗号分隔,如:" & vbCrLf & _
        "1-5,10-20,95-100"
    arr = Split(Replace(Trim(InputBox(prmt, "删除范围", "1-5,10-20")), ",", Chr(44)), Chr(44))
    For i = UBound(arr) To LBound(arr) Step -1
        brr = Split(arr(i), "-")
        If LBound(brr) = UBound(brr) Then
            ReDim Preserve brr(1)
            brr(1) = brr(0)
        End If
        For j = Val(brr(1)) To Val(brr(0)) Step -1
            Set pg = Selection.GoTo(wdGoToPage, wdGoToAbsolute, j)
            With pg
                .Select
                .SetRange pg.Start, pg.Bookmarks("\page").End
                .Delete
                k = k + 1
            End With
        Next
    Next
    Application.ScreenUpdating = True
    
    Set pg = Nothing
    MsgBox Format(k, "完成 共删除了0页")
    Exit Sub
err1:
    MsgBox Err.Description
End Sub

三、操作图示

1.复制代码-运行

新建模块-粘贴代码-运行

2.输入要删除的页码范围

根据提示输入要删除的页码范围,要求:

请输入需要各部分删除的页码范围(页码从小到大,且每部分不能重叠),每部分首尾用【-】连接,各部分之间用逗号分隔,如: "1-5,10-20,95-100";

中间的引号、逗号都用半角符号(英文标点)。

输入页码范围-确定

3.操作完成

可以看到,刚刚用户填写的【67-78,80-81】页已经正确删除。

删除完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

VBA-守候

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值