Word中的段落对象具有名为Range的属性。在此Range对象中有一个名为Cells的属性。
对于不在表中的段落,此属性Paragraph.Range.Cells设置为“”。这可以在调试模式的Watches窗口中看到。
对于表中的段落,属性Paragraph.Range.Cells中包含其他属性,例如它有一个名为Count的属性。
我正在使用Paragraph.Range.Cells的这个属性来确定段落是否在表中。但是,我似乎无法弄清楚如何测试它。
例如,我不能简单地像这样测试...
如果paragraph.Range.Cells<> Null然后....甚至 如果是IsNull(paragraph.Range.Cells)那么......
它抛出运行时错误'5907'此位置没有表
那么,我该如何测试呢?感谢
答案 0 :(得分:11)
您可以使用Information
property:
If Selection.Information(wdWithInTable) Then
'What ever you'd like to do
End If
因此,您不需要任何手动错误捕获机制。
答案 1 :(得分:7)
除非段落在表格中,否则无法调用Cells方法。您需要使用其他方法来确定范围是否在表中。
你可以使用......
paragraph.Range.Tables.Count > 0
...或...
paragraph.Range.Information(wdWithinTable)
请注意,第二个看起来更明显,但实际上更慢(如果您在循环中执行此操作,则只会出现问题)。
答案 2 :(得分:1)
* 编辑(如果错误=)更改为(如果错误<>)
您可以简单地允许错误发生并使用OnError
语句
Dim ParagraphIsTable As Object
OnError Resume Next 'allows errors to happen but execute next instruction
ParagraphIsTable = paragraph.Range.Cells
If Err <> 5907 Then '(this is to check for a specific error that might have happened)
'No Error occured, this means that ParagraphIsTable variable must contain a value
' Do the rest of your code here
Else
' an Error occured, this means that this is not a table
' do whatever
End If
OnError Goto 0 ' This cancels the effect of OnError Resume Next
' Which means if new errors happen, you will be prompt about them