如何通过VBA检测文档中的上一个标题是标题1还是标题7

问题描述

我的模板包含普通文本的标题1至5和附录标题(基于标题7、8和9)。

表格标题和图形标题不同:基于标题1或附录。

  • 表1.1或
  • 表A.1

工作正常。但是...现在,我在功能区中有两个按钮可以插入表格标题

与图形标题相同。

必须有一种方法可以检测到先前的主要标题标题1或标题7或大纲级别1或7),因此我只需要一个按钮即可插入表格(或图形)标题。但是我找不到它。

有人知道吗?谢谢。 赫尔玛(Helma)

解决方法

Word中没有特定属性可以返回大纲级别为x的上一级。您将需要创建一个从当前段落向后循环的宏,直到找到大纲级别1或大纲级别7。

这里有两个函数示例,如果前一个标题级别是大纲级别7,则返回true,如果是大纲级别1,则返回false。使用RubberDuck代码检查器检查该代码时没有错误,也没有发现。

import networkx as nx

%matplotlib inline

g = nx.DiGraph()
g.add_nodes_from(range(1,9))
g.add_edges_from([(1,2),(1,3),(2,4),(3,6),(4,5),(5,7),8)])

nx.draw_planar(g,with_labels=True)
,

单词包含一个隐藏的书签,您可以使用该书签获取当前标题级别的范围。通过测试该范围内第一段的大纲级别,可以确定您是否在附录中。

Sub TestIsAppendix()
   If IsAppendix(Selection.Range) Then MsgBox "In appendix"
End Sub

Public Function IsAppendix(ByVal para As Range) As Boolean
   Dim headingBlock As Range
   Set headingBlock = para.GoTo(What:=wdGoToBookmark,Name:="\HeadingLevel")
   Select Case headingBlock.Paragraphs.Item(1).OutlineLevel
      Case 7 To 9
         IsAppendix = True
      Case Else
         IsAppendix = False
   End Select
End Function

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...