vba - 使用多个不连续选择

标签 vba ms-word multipleselection

我正在尝试使用多项选择来做某事。我想在每个选定的段落之前添加一些文本,但是当我选择多个不连续的段落时,如果我执行 Selection.Paragraphs.Count,我总是得到“1”。

如何分开处理所有段落?

例子:

Paragraph1(Selected first)
Paragraph2
Paragraph3(Selected second)

当我尝试在这些段落的开头添加一些文本时得到的结果:

Paragraph1
Paragraph2
TEXTParagraph3

我真正想得到的是:

TEXTParagraph1
Paragraph2
TEXTParagraph3

我是这样工作的:

sub x()
  dim p as paragraph
  for each p in selection.paragraphs
    p.range.insertbefore("TEXT")
  next
End sub

最佳答案

Word 根本无法执行您希望它执行的操作。自 2003 年引入多项选择以来,开发人员一直希望如此(我认为是,可能是 2007 版)。 Word 的对象模型根本不支持它。

如果这是您想要提供给用户以使生活更轻松的东西,您需要为该工具提供一种标记段落的方法,以便您的代码可以识别它们。例如,您可以提供一个宏,为每个选择分配一个递增的书签名称(用户选择,然后运行您的宏;对每个段落重复)。然后您的代码可以寻址每个书签并执行操作。为了使这更加用户友好,您可以将宏分配给键盘快捷键和/或功能区/QAT 中的按钮和/或右键单击菜单。

关于vba - 使用多个不连续选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33730750/

相关文章:

vba - 如果单元格不是四个确定值之一,则复制整行

sql - 如何从 VBA 连接到 Apache spark/hadoop

java - 将数据从数据库加载到每个字段的 Jcheckboxes

swift - 我可以让某些 CollectionView 部分为单选,而其他部分为多选吗?

vba - 微软 Access : Import CSV file from a list of multiple files

vba - 在 Excel 中选择多行

delphi - 如何使用参数调用Word宏

ms-word - Word 2007 功能区 - 正确对齐组中的控件

javascript - 如何判断复制的内容是来自word文档还是浏览器网页?

c++ - QTableView高级选择