【问题标题】:Check if Autoshape exists检查 Autoshape 是否存在
【发布时间】:2018-09-10 19:27:50
【问题描述】:

我正在尝试创建一个简单的宏来删除一些数据,包括 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

【问题讨论】:

    标签: excel excel-2003 vba


    【解决方案1】:

    您可以使用对象类型形状,在我的代码中为Shp,并尝试将其设置为Set Shp = ActiveSheet.Shapes("ACCESS")

    在尝试Set形状对象之前添加On Error Resume Next(这样不会出现运行时错误),在尝试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
    

    【讨论】:

    • 看准了,Shai Rado - 效果很好。非常感谢您的帮助!很好的答案!!!
    猜你喜欢
    • 2015-10-18
    • 2011-05-09
    • 2012-10-15
    • 2018-08-22
    • 2013-01-12
    • 2012-01-22
    • 2013-06-18
    • 2012-01-17
    • 2012-05-17
    相关资源
    最近更新 更多