删除带有形状的行.. 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
我目前正在制作一个 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