我的要求的理解是:
- 需要删除的ActiveSheet所有复选框后也删除
Rows
其中CheckBoxes
放置。
让我们先来看看进入DrawingObjects
或Shapes
的Placement
财产。此属性(见Shape Members (Excel):
Shape.Placement属性(Excel)中 返回或设置表示 对象附加到它下面的细胞的方式有XlPlacement值
XlPlacement。枚举有这个可能的值:
名称:说明
xlFreeFloating:对象是自由浮动的。
xlMove:对象与单元格一起移动。
xlMoveAndSize:对象随着单元格移动和调整大小。
这意味着,如果一个CheckBox
具有其Placement
属性设置为xlFreeFloating
它不会与小区移动时,它上面的行被删除,因此这CheckBox
将不再是在预期的行。出于这个原因,在删除任何行之前,我们需要确保所有CheckBoxes
的Placement
属性不是xlFreeFloating
。
另外,作为一个行可能包含多个CheckBox
我们需要先创建一个范围内被删除的所有行,然后删除CheckBoxes
最后删除相应的Rows
此过程使用的所有的牵挂以上:
子Shp_CheckBoxAndRow_Delete() 昏暗ChkBox作为复选框 昏暗rRow作为范围,rRowsDel作为范围
Rem Set CheckBoxes Placement Property
For Each ChkBox In ActiveSheet.CheckBoxes
ChkBox.Placement = xlMove
Next
Rem Set CheckBoxes Rows
For Each ChkBox In ActiveSheet.CheckBoxes
Rem Set CheckBox Row
'Set rRow = Range(ChkBox.TopLeftCell, ChkBox.BottomRightCell).EntireRow
Set rRow = ChkBox.TopLeftCell.EntireRow
rRow.Select: Stop
rRow.Interior.Color = RGB(255, 255, 0): Stop
Rem Join CheckBoxes Rows
If rRowsDel Is Nothing Then
Set rRowsDel = rRow
Else
Set rRowsDel = Union(rRowsDel, rRow)
End If
Next
Rem Delete CheckBoxes
For Each ChkBox In ActiveSheet.CheckBoxes
ChkBox.Delete
Next
Rem Delete CheckBoxes Rows
rRowsDel.Delete
End Sub
来源
2015-11-28 01:16:31
EEM
我的理解是,你想要删除'ActiveSheet'中的所有'CheckBoxes',并且删除它们所在的行。请您确认上述内容是否正确... – EEM
您是否尝试过提供的答案? – EEM