VBA 可以移动文本框,但随后停止工作

VBA 可以移动文本框,但随后停止工作

此代码应在工作表上找到一个普通/基本文本框,然后将其向左移动。然后转到下一张工作表并执行相同操作。一直到最后一张工作表。

它工作正常(我使用 F8 循环浏览),但下一张表显示该对象不支持该方法的属性

我不知道为什么会发生这种事。

Dim I As Integer
Dim txBox As Shape
Set txBox = ActiveSheet.Shapes("Text Box 1")


For I = 1 To Worksheets().Count
    Worksheets(I).Activate
    txBox.Select
    **Selection.ShapeRange.IncrementLeft 586.5**

Next I

End Sub

答案1

假设文本框在每个工作表上都名为“文本框 1”,您只需将行移动到循环Set txBox =内即可For。否则,txBox仅指启动宏时工作表上处于活动状态的文本框。由于txBox不再位于活动工作表上,因此Selection不指txBox,而更可能是单元格,而不一定是文本框,因此出现“对象不支持此属性或方法”错误。希望下面的代码能解决问题,或者至少让您朝着正确的方向前进。

Dim I As Integer
Dim txBox As Shape

For I = 1 To Worksheets().Count
    Worksheets(I).Activate
    Set txBox = ActiveSheet.Shapes("Text Box 1")
    txBox.Select
    Selection.ShapeRange.IncrementLeft 586.5
Next I

编辑:
.Select顺便说一句,您可以通过避免所有、.Activate、调用 来提高宏的性能Selection

Dim ws as Worksheet
Dim txBox As Shape

For Each ws in Worksheets
    Set txBox = ws.Shapes("Text Box 1")
    txBox.IncrementLeft 586.5
Next ws

相关内容