Vba Excel形状错误

Vba Excel形状错误,vba,excel,Vba,Excel,根据我找到的代码,我试图计算工作表中的形状数,但我得到了一个“溢出”错误。我使用的代码如下所示: Sub tst() Dim i As Integer i = Sheets("DB_AL").Shapes.count MsgBox i End Sub 我认为问题在于工作表中的形状数量 我也不知道如何删除它们。我还尝试使用找到的代码删除形状: 但我也得到了一个“超出范围”的错误 在这个阶段,我更感兴趣的是删除形状,因为这会使工作表不可用 有什么想法吗 溢出错误 在代码中,

根据我找到的代码,我试图计算工作表中的形状数,但我得到了一个“溢出”错误。我使用的代码如下所示:

Sub tst()
    Dim i As Integer
    i = Sheets("DB_AL").Shapes.count
    MsgBox i
End Sub
我认为问题在于工作表中的形状数量

我也不知道如何删除它们。我还尝试使用找到的代码删除形状:

但我也得到了一个“超出范围”的错误

在这个阶段,我更感兴趣的是删除形状,因为这会使工作表不可用

有什么想法吗

溢出错误 在代码中,您试图获得
形状的结果。将
计数为
整数
,您面临的问题是因为
形状。计数
返回一个

以下代码应按预期工作:

Sub tst()
    Dim i As Long
    i = Sheets("DB_AL").Shapes.count
    MsgBox i
End Sub
删除工作表中的所有形状 当对每个
循环使用
时,不需要声明对象,只需使用以下代码遍历所有形状即可:

Sub delShapes()
    For Each shapeToDelete In ThisWorkbook.Sheets("DB_AL").Shapes
        shapeToDelete.Delete
    Next shapeToDelete
End Sub
溢出错误 在代码中,您试图获得
形状的结果。将
计数为
整数
,您面临的问题是因为
形状。计数
返回一个

以下代码应按预期工作:

Sub tst()
    Dim i As Long
    i = Sheets("DB_AL").Shapes.count
    MsgBox i
End Sub
删除工作表中的所有形状 当对每个
循环使用
时,不需要声明对象,只需使用以下代码遍历所有形状即可:

Sub delShapes()
    For Each shapeToDelete In ThisWorkbook.Sheets("DB_AL").Shapes
        shapeToDelete.Delete
    Next shapeToDelete
End Sub

溢出错误是因为您正在处理的数据对于您的变量来说太大了。您已将
i定义为整数
,但
Sheets(“DB_AL”).Shapes.count
返回一个长类型,这将引发错误。只要定义
i,只要
就行了

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

ActiveSheet.DrawingObjects.Delete

溢出错误是因为您正在处理的数据对于您的变量来说太大了。您已将
i定义为整数
,但
Sheets(“DB_AL”).Shapes.count
返回一个长类型,这将引发错误。只要定义
i,只要
就行了

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

ActiveSheet.DrawingObjects.Delete

溢流问题由Tricel解释

要删除形状,可以使用此代码

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

溢流问题由Tricel解释

要删除形状,可以使用此代码

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
请尝试以下代码:

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
请尝试以下代码:

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


您是否尝试对变量i使用长类型而不是整数?形状。计数返回一个长的。很好的一个。它适用于长:82555形状。你知道如何遍历它们吗?你有没有试着用一个长类型而不是整数作为变量i?形状。计数返回一个长的。很好的一个。它适用于长:82555形状。你知道如何遍历它们吗?我仍然发现你的delShapes代码有一个“超出范围”的错误:-(@Selrac你想删除什么形状?多少?在这个阶段,我想把它们全部删除really@Selrac你试过复制粘贴我的代码吗?我运行了它,一切正常。确保工作表的名称按照arunv的指定正确写入。“当你使用For Each循环时,你不需要声明对象”-在VBA中,应始终使用“Option Explicit”,并且还必须声明循环变量(无论如何,这是一个很好的做法)。VB.Net允许稍微宽松一点,但VBA不允许。我仍然会收到delShapes代码的“超出范围”错误:-(@Selrac你想删除什么形状?多少?在这个阶段,我想把它们全部删除really@Selrac你试过复制粘贴我的代码吗?我运行了它,一切正常。确保工作表的名称按照arunv的指定正确写入。“当你使用For Each循环时,你不需要声明对象”-在VBA中,应始终使用“Option Explicit”,并且还必须声明循环变量(无论如何,这是一个很好的做法)。VB.Net允许稍微宽松一点,但不允许VBA。我在这里得到一个超出范围的值,如果我尝试工作表(“DB_AL”)。形状(1).delete你完全正确。工作表受到了保护。删除保护解决了错误。谢谢。我花了几个小时讨论这个问题。我很高兴它有帮助。^^我在这里得到了一个超出范围的错误,如果我尝试工作表(“DB_AL”)。形状(1).delete您完全正确。该工作表已受保护。删除保护解决了错误。谢谢。我花了数小时讨论此问题。我很高兴它有所帮助。^^请验证您的工作表名称是否为“DB_AL”?或更改其工作表(“DB_AL”)。Shapes.count肯定有效。我认为名称“DB_AL”没有问题请验证工作簿中的工作表名称和代码中的工作表名称。当出现错误时,两者也应相同。突出显示哪一行?当我出现错误时,错误出现在“shape.Delete”行。代码运行一段时间后,我出现错误。准确的错误是“运行时错误”-2147024809(80070057)“:指定的错误超出范围。请验证您的工作表名称是否为“DB_AL”?或更改其工作表(“DB_AL”)。Shapes.count肯定有效。我认为名称“DB_AL”没有问题”请验证工作簿中的工作表名称和代码中的工作表名称。当出现错误时,两者也应相同。突出显示哪一行?当我出现错误时,错误出现在“shape.Delete”行。代码运行一段时间后,我出现错误。准确的错误是“运行时错误”-2147024809(80070057)“:指定的错误超出范围。是否确定这些答案都是形状?如果此处发布的所有答案均无效,是否确定要删除形状?是否确定这些答案都是形状?如果此处发布的所有答案均无效,是否确定要删除形状?