Excel 如何向左移动工作簿中除其中一个形状以外的所有形状

Excel 如何向左移动工作簿中除其中一个形状以外的所有形状,excel,vba,Excel,Vba,我正在尝试使VBA向左移动工作簿所有工作表中的所有形状,但其中一个形状除外。我能够进行编码以向左移动所有形状,但当我尝试添加异常时,它不起作用。有人能帮我吗?这就是我所做的编码(我刚刚开始使用VBA): Sub宏1() 将ws设置为工作表 将SP设置为对象 Application.ScreenUpdating=False 对于每个ws-In表单 ws.Activate 对于ActiveSheet.DrawingObject中的每个SP 如果SP.名称为“矩形10”,则 选择。左=100 如果结束

我正在尝试使VBA向左移动工作簿所有工作表中的所有形状,但其中一个形状除外。我能够进行编码以向左移动所有形状,但当我尝试添加异常时,它不起作用。有人能帮我吗?这就是我所做的编码(我刚刚开始使用VBA):

Sub宏1()
将ws设置为工作表
将SP设置为对象
Application.ScreenUpdating=False
对于每个ws-In表单
ws.Activate
对于ActiveSheet.DrawingObject中的每个SP
如果SP.名称为“矩形10”,则
选择。左=100
如果结束
下一个
下一个
端接头

谢谢

首先,在循环该图纸的图形对象之前,无需激活该图纸。其次,应该使用对象变量
SP
来设置Left属性。因此,假设目标工作簿是活动工作簿,请尝试以下操作

Sub Macro1()

    Dim ws As Worksheet
    Dim SP As Object

    Application.ScreenUpdating = False

    For Each ws In Worksheets
        For Each SP In ws.DrawingObjects
            If SP.Name <> "Rectangle 10" Then
                SP.Left = 100
            End If
        Next
    Next

    Application.ScreenUpdating = True

End Sub
Sub宏1()
将ws设置为工作表
将SP设置为对象
Application.ScreenUpdating=False
对于工作表中的每个ws
对于ws.DrawingObject中的每个SP
如果SP.名称为“矩形10”,则
SP.左=100
如果结束
下一个
下一个
Application.ScreenUpdating=True
端接头

这很有效,唯一的问题是我实际上需要几个形状来移动相同的距离。我的意思是我在几列中有几个形状,我需要它们水平移动相同的距离。使用此解决方案,它们最终都位于同一列中,因此其中一些移动的时间比其他移动的时间长。我尝试过几种方法,似乎incrementleft函数不适用于对象。我也使用了。left,但我也不能使用它。有人能帮我吗?谢谢
Sub Macro1()

    Dim ws As Worksheet
    Dim SP As Object

    Application.ScreenUpdating = False

    For Each ws In Worksheets
        For Each SP In ws.DrawingObjects
            If SP.Name <> "Rectangle 10" Then
                SP.Left = 100
            End If
        Next
    Next

    Application.ScreenUpdating = True

End Sub