【发布时间】:2018-02-28 23:07:57
【问题描述】:
我正在 VBA Word 中编写一个宏,它从 Excel 文件中复制数据并使用预定义的书签将数据粘贴到 Word 文件中。 我在 Word 中有两组不同的书签,根据要执行的操作,宏首先删除该特定操作不需要的书签,然后将数据粘贴到其余书签所在的位置。
到目前为止,代码在这两种情况下都有效,但由于不是一名熟练的程序员,我不得不为特定任务编写几行代码才能工作,我希望您能帮助“清理”这部分代码,使其更少”复杂”,并且在未来需要更改时也更容易修改。正如我所说,您将在下面找到代码,它可以工作,但并不漂亮。
Dim arr As Variant
Dim bookmark As Bookmarks
Dim i As Long
arr = Array("a", "b", "c")
For Each bookmark In ActiveDocument.Bookmarks
If bookmark <> arr(0) And bookmark <> arr(1) _
And bookmark <> arr(2) Then
bookmark.Delete
Else
bookmark.Select 'this is just to give a "useless" alternative to vba
End If
Next bookmark
我在这里只放了数组的 3 个元素,虽然实际上有很多,但想法是自动执行“AND”功能,范围如下:如果 Word 文件中已经存在的每个书签都不同比数组“arr”的任何元素都必须删除该书签,否则不会发生任何事情。 因此,我不想对数组的每个元素使用一个 AND 函数,而是想遍历数组,以便将每个书签与数组的所有元素进行比较,并且只有在删除不同的情况下。我不知道是否有办法以某种方式循环“AND”函数,但是向数组添加更多元素意味着添加相同数量的“AND”。
希望内容详尽,希望您能帮助我。
提前非常感谢!
【问题讨论】:
标签: arrays vba excel ms-word bookmarks