全民一起VBA实战篇第六课:VBA编程技巧及Word调用

Err 对象

使用Err可以提升程序的健壮性,有利于用户使用。

Option Explicit

Sub errDemo()    
    Dim i As Long   
    i = 3    
    On Error GoTo sthwrong
    '出现问题跳转到sthwrong    
    Do While Cells(i, 2) <> ""        
        Cells(i, 5) = Cells(i, 4) / Cells(i, 3)        
        i = i + 1    
    Loop       
    MsgBox "全部完成!"    
    Exit Sub
    '如果正常执行完就跳出程序    
sthwrong:
    If Err.Number = 13 Then    
        MsgBox "第" & i & "行不是数字,请查证"
    ElseIf Err.Number = 11 Then
        MsgBox "第" & i & "行除数为零,请查证"
    ElseIf Err.Number > 0 Then
        MsgBox "发生未知错误,请联系开发者"
    End If
    '根据出错代码自行匹配
    '只要出了错,number就一定大于0
    Resume Next
    '返回到上述出错代码的下一行,继续执行
End Sub

在这里插入图片描述
在这里插入图片描述

如果想恢复最原始粗暴的出错提示,可以使用

On Error GoTo 0

VBA在Word中的一个应用

题目要求:找出Word中所有的表格,并复制到一张新表里面

Sub gettables()
    Dim srcDoc As Document, newDoc As Document
    Dim t As Table, r As Range, nr As Range
    Dim count As Long
    Set srcDoc = Documents("1918747-2017A-20190123-晚上1.docm")
    '该文件必须处于打开状态
    count = 0
    '记录有多少个表格
    Set newDoc = Documents.Add
    '新建一个文件
    For Each t In srcDoc.Tables
        count = count + 1
        Set r = t.Range
        '取每一个表格的所有文字以及格式作为一个Range
        r.MoveStart wdParagraph, -1
        '把range的范围往上扩充一段
        r.Copy        
        newDoc.Range(newDoc.Range.End - 1, newDoc.Range.End - 1).InsertParagraph
        '在新建文件的最后一个位置插入一整段
        newDoc.Range(newDoc.Range.End - 1, newDoc.Range.End - 1).Paste
        '在插入一整段后,读取到的最后一个位置插入刚才复制的表格
        '输入文字  012,那么起始位置是0的左侧,为0,结束位置是2右边编辑标记右侧
        '也就是说取得的值为4,这个要注意
    Next t
    MsgBox "一共有" & count & "个表格"
    '也可以写newDoc.Tables.count
End Sub

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值