此代码应在工作表上找到一个普通/基本文本框,然后将其向左移动。然后转到下一张工作表并执行相同操作。一直到最后一张工作表。
它工作正常(我使用 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