【发布时间】:2019-01-28 00:33:17
【问题描述】:
我写了一个 vba 宏,以便用 word 打印一些抽奖券。我的 vba 代码:
For I = 1 To 10
ActiveDocument.Shapes(1).TextFrame.TextRange.Text = N
ActiveDocument.Shapes(2).TextFrame.TextRange.Text = N
ActiveDocument.Shapes(3).TextFrame.TextRange.Text = N + 10
ActiveDocument.Shapes(4).TextFrame.TextRange.Text = N + 10
ActiveDocument.Shapes(5).TextFrame.TextRange.Text = N + 20
ActiveDocument.Shapes(6).TextFrame.TextRange.Text = N + 20
ActiveDocument.Shapes(7).TextFrame.TextRange.Text = N + 30
ActiveDocument.Shapes(8).TextFrame.TextRange.Text = N + 30
Application.PrintOut
N = N + 1
Next
但是当我运行它时,我得到了错误:
对象不支持附加文本
当我调试时,vba 代码的shapes(8) 行被突出显示。其他 7 个文本框已正确填充,如果我删除最后一行代码,它会打印得很好,但第 8 个文本框显然没有被填充。我在这里错过了什么?
【问题讨论】:
-
所以我将shapes(8) 切换到shapes(9) 并且成功了。页面上的某个地方可能有一个流氓文本框吗?我找不到一个。还是删除文本框后word不会重新分配索引?
-
我对此的偏好是使用带有单元格的表格作为门票......但是FWIW任何“浮动”的东西都是
Shape,所以如果文档中还有其他内容可以占指数。索引将是锚位置,而不是您看到形状的顺序。如果您想使用形状,我会为它们命名并使用这些名称。您可能想尝试 Home/Editing/Select/Select 对象以查看所有形状...