首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何检查是否存在形状?

如何检查是否存在形状?
EN

Stack Overflow用户
提问于 2019-05-21 00:37:56
回答 1查看 0关注 0票数 0

如何检查工作表中是否存在任何形状?

我使用下面的代码:

代码语言:javascript
复制
Sub my()
    Dim shp As Shape
    If Not shp Is Nothing Then
        For Each shp In Sheet1.Shapes
            mesage = shp.TopLeftCell.Address(0, 0)
        Next shp
    Else
        mesage = Sheet1.Cells(1, 12).Address
    End If

End Sub

由于我没有给出形状名称,它正在执行'if-else'循环的'else'部分。

因为每次形状名称不同,我不能在这里给出形状名称。

EN

回答 1

Stack Overflow用户

发布于 2019-05-21 10:07:27

检查是否存在任何形状

如果要检查是否有任何 VBA形状活动工作表上,那么你可以简单地检查的价值.Count属性的的Shapes对象

代码语言:javascript
复制
ActiveSheet.Shapes.Count

...将返回形状数量,如果没有形状则返回

用法示例:

代码语言:javascript
复制
If ActiveSheet.Shapes.Count = 0 Then MsgBox "No shapes found!"

检查是否存在特定形状

如果需要检查是否存在特定形状,请使用此功能:

代码语言:javascript
复制
Function shapeExists(shapeName As String) As Boolean
'returns TRUE if a shape named [ShapeName] exists on the active worksheet
    Dim sh As Shape
    For Each sh In ActiveSheet.Shapes
         If sh.Name = shapeName Then shapeExists = True
    Next sh
End Function

用法示例:

代码语言:javascript
复制
If Not shapeExists("My Shape Name") Then MsgBox "Shape not found!"

列出所有形状

在“立即”窗口中列出活动工作表上的所有形状。(按Ctrl+ G打开它。)

代码语言:javascript
复制
Sub ListAllShapes()
'list all shapes on the active worksheet
    Dim sh As Shape
    For Each sh In ActiveSheet.Shapes
        Debug.Print "id=" & sh.ID, "name=" & sh.Name
    Next sh
End Sub

删除所有形状

从活动工作表中删除所有形状。

代码语言:javascript
复制
Sub DeleteAllShapes()
'delete all shapes on the active worksheet (Including CONTROLS, so use with caution!)
    Dim sh As Shape
    For Each sh In ActiveSheet.Shapes
        sh.Delete
    Next sh
End Sub

更多信息:

有关使用VBA形状的更多详细信息和示例,请参阅我对其他与形状相关的问题的答案(包括仅为另一种形状的控件):

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100005180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档