按照我找到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
但是我也得到了超出范围的'错误。
在这个阶段,我对删除形状更感兴趣,因为它使工作表无法使用。
有什么想法吗?
答案 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
即可。
要删除所有形状,请尝试:
ActiveSheet.DrawingObjects.Delete