我正在尝试创建一个简单的宏来删除一些数据,包括Autoshape
- Shapes("ACCESS")
,但我希望此宏仅在Autoshape存在时运行。
如果它不存在,则操作只是Range("B2").Select
有人可以帮忙吗?
我的代码
Sub DeleteRepWT()
ActiveSheet.Shapes("ACCESS").Select
Selection.ShapeRange.IncrementLeft 57#
Selection.ShapeRange.IncrementTop -85.5
Range("M4").Select
ActiveSheet.Shapes("ACCESS").Select
Selection.Delete
Columns("K:AI").Select
Selection.Delete Shift:=xlToLeft
Range("B2").Select
End Sub
答案 0 :(得分:1)
您可以在我的代码Shp
中使用对象类型形状,并尝试将其设置为Set Shp = ActiveSheet.Shapes("ACCESS")
。
在尝试On Error Resume Next
形状对象之前添加Set
(因此无法获得运行时错误),尝试Set
形状后,您可以检查If Shp Is Nothing
,表示检查您是否能够Set
形状(如果您不是,则表示工作表中没有Shapes("ACCESS")
)。
<强>代码强>
Option Explicit
Sub DeleteRepWT()
Dim Shp As Shape
On Error Resume Next
Set Shp = ActiveSheet.Shapes("ACCESS") ' try to set the object to "ACCESS"
On Error GoTo 0
If Shp Is Nothing Then ' if there is no Shapes("ACCESS")
Range("B2").Select
Else ' shape exists
With Shp
' rest of your original code here ...
End With
End If
End Sub