删除带有形状的行.. TopLeftCell错误

时间:2017-04-26 10:23:12

标签: excel-vba shape intersect vba excel

我目前正在为公司其他人使用excel模板。 我需要用一个按钮删除行。 我相信我已经完成了所有事情,但我一直都会遇到错误。

在下方,您可以看到出错的代码;

Worksheets("Storyboard").Activate
Worksheets("Storyboard").Unprotect Password:="**$#B'A1313XQ.;**"

satirlar = Baslangic & ":" & Bitis

For i = Baslangic To Bitis
Dim s As Shape
For Each s In Worksheets("Storyboard").Shapes
    If Not Intersect(s.TopLeftCell, Range("L" & Baslangic & ":" & "L" & Bitis)) Is Nothing Then
        s.Delete
    End If
Next s

Next i

Rows(satirlar).Delete Shift:=xlUp

我一直在" s.topleftcell"部分。它表示"应用程序定义的错误或对象定义错误"。

关于此代码; " Baslangic"和" Bitis"使用表单预定义。

我可以在这里使用任何可能的建议..

2 个答案:

答案 0 :(得分:2)

数据验证(DV)下拉列表是一种形状,但DV下拉列表没有TopLeftCell属性。您可以做的是循环遍历DrawingObjects

For i = Baslangic To Bitis
Dim s As Object
For Each s In Worksheets("Storyboard").DrawingObjects
    If Not Intersect(s.TopLeftCell, Range("L" & Baslangic & ":" & "L" & Bitis)) Is Nothing Then
        s.Delete
    End If
Next s

Next i

答案 1 :(得分:0)

实际上,尝试这样的事情:

Sub TestMe()

    Dim myShape As Shape

    For Each myShape In ActiveSheet.Shapes
        Debug.Print myShape.TopLeftCell.Address(0, 0)
        Debug.Print myShape.TopLeftCell.row
    Next myShape

End Sub

这是使用topLeftCell的好方法。您甚至可以明确地比较行,并使您的代码没有Intersect()

类似于if myShape.TopLeftCell.row >Baslangic或类似的东西。

如果您将代码改为

,则可能有效。

If Not Intersect(s.TopLeftCell, Worksheets("Storyboard").Range("L" & Baslangic & ":" & "L" & Bitis)) Is Nothing Then
相关问题