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

Delete row with shapes.. TopLeftCell Error

我目前正在制作一个 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" 部分收到错误。它说 "application-defined or object defined error".

关于这段代码; "Baslangic" 和 "Bitis" 是用表格预定义的。

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

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

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

数据验证 (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