VBA Excel 2010运行时错误1004-应用程序定义或对象定义错误
我是一名新的分析师,正在处理启用宏的工作表。在同一工作表上多次运行宏(即创建、删除)时,我遇到了一些相当常见的运行时错误。我在互联网上进行了研究,发现出现错误的原因是,我的对象/变量没有在每次重新运行宏时释放。快速解决方法是,每次在运行宏之前进行更改时,我都会保存工作表;但是,似乎有一个更好的解决方案,可以通过每次运行宏时将代码更改为“重新定义”对象来完全消除此问题。由于我是VBA新手,我正在寻求以下代码行的帮助:VBA Excel 2010运行时错误1004-应用程序定义或对象定义错误,excel,runtime-error,vba,Excel,Runtime Error,Vba,我是一名新的分析师,正在处理启用宏的工作表。在同一工作表上多次运行宏(即创建、删除)时,我遇到了一些相当常见的运行时错误。我在互联网上进行了研究,发现出现错误的原因是,我的对象/变量没有在每次重新运行宏时释放。快速解决方法是,每次在运行宏之前进行更改时,我都会保存工作表;但是,似乎有一个更好的解决方案,可以通过每次运行宏时将代码更改为“重新定义”对象来完全消除此问题。由于我是VBA新手,我正在寻求以下代码行的帮助: Sub Delete_Icons() ' INTERSECT COMMAN
Sub Delete_Icons()
' INTERSECT COMMAND DETERMINES IF A SHAPE EXISTS WITHIN A SPECIFIED RANGE.
' IF THERE IS A SHAPE WITHIN ROWS 3 AND 1000 THEN IT WILL BE DELETED.
' THIS DOES NOT DELETE THE MACRO BUTTON IN ROWS 1 AND 2.
Dim shp As Shape
For Each shp In ActiveSheet.Shapes
*' this below line caused run-time error 1004*
**If Not Intersect(shp.TopLeftCell, Range("A3:F1000")) Is Nothing Then**
shp.Delete
End If
Next shp
如果您能帮助修复这行代码中的运行时错误,我们将不胜感激。谢谢。为
范围
对象的两个实例定义了相交
函数,而不是范围
和形状
试着这样做:
Dim shp As Shape, rng As Range
Dim i As Integer, j As Integer
For i = 1 To ActiveSheet.Shapes.Count
Set shp = ActiveSheet.Shapes(i)
For j = 1 To ActiveSheet.Shapes.Range.Count
Set rng = ActiveSheet.Shapes(i).Range
' this below line caused run-time error 1004*
If Not Intersect(rng, Range("A3:F1000")) Is Nothing Then
shp.Delete
End If
Next j
Next i
如果此处的目的只是为了避免删除某些特定形状,那么您可以将事情简化为仅测试名称。因此,对于每个循环,
中的测试可以是如果shp.Name为“foo”,那么