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