Excel形成错误

时间:2018-04-24 09:12:49

标签: excel vba excel-vba

按照我找到here的代码,我试图计算工作表中的形状数量,但我得到了一个溢出的'错误。我使用的代码如下:

Sub tst()
    Dim i As Integer
    i = Sheets("DB_AL").Shapes.count
    MsgBox i
End Sub

问题,我认为是工作表中的形状数量。

我不确定如何删除它们。我还尝试使用我找到的here代码删除形状:

Sub delShapes()
    Dim shape As Excel.shape
    For Each shape In Sheets("DB_AL").Shapes
        shape.Delete
    Next
End Sub

但是我也得到了超出范围的'错误。

在这个阶段,我对删除形状更感兴趣,因为它使工作表无法使用。

有什么想法吗?

4 个答案:

答案 0 :(得分:2)

溢出错误

在您的代码中,您尝试将Shapes.Count的结果导入Integer,您遇到的问题是因为Shapes.Count返回{{1} }}

以下代码应该按预期工作:

Long

删除工作表中的所有形状

当您使用Sub tst() Dim i As Long i = Sheets("DB_AL").Shapes.count MsgBox i End Sub 循环时,您不需要声明对象,只需使用以下代码遍历所有形状:

For Each

答案 1 :(得分:2)

过流问题由Teasel解释,

删除可以使用此代码的形状

Sub delShapes()
Dim shape As shape, ws As Worksheet
Set ws = ThisWorkbook.Sheets("DB_AL")
For Each shape In ws.Shapes
    shape.Delete
Next
End Sub

答案 2 :(得分:1)

尝试以下代码:

Sub delShapes()
    Dim i As Long
    Dim x As Long
    i = Sheets("DB_AL").Shapes.Count
    For x = i To 1 Step -1
         Sheets("DB_AL").Shapes(x).Delete
    Next x
End Sub

答案 3 :(得分:0)

溢出错误是因为您正在使用的数据对于您的变量来说太大。您已定义i As Integer,但Sheets("DB_AL").Shapes.count返回Long类型,这会引发错误。只需定义i As Long即可。

  

More info about Data Types

要删除所有形状,请尝试:

ActiveSheet.DrawingObjects.Delete