2015-11-27 109 views
-1

我原本想要一个简单的宏来删除整行。我创建了这个,很快发现它并没有删除复选框。我试图即兴创建一个新的宏,删除活动行中的所有复选框,然后删除该行。删除活动行中的复选框并删除整行

不幸的是,我只能删除活动单元格中的复选框,而不是活动行。

Sub DeleteCheckboxandRow() 

Dim cb As CheckBox 

For Each cb In ActiveSheet.CheckBoxes 
    If cb.TopLeftCell.Address = ActiveCell.Address Then cb.Delete 
Next 
Rows(ActiveCell.Row).EntireRow.Delete 
End Sub 

是有人能解释我如何可以修改上面的宏从整个活动行不只是活动单元格删除复选框?

+0

我的理解是,你想要删除'ActiveSheet'中的所有'CheckBoxes',并且删除它们所在的行。请您确认上述内容是否正确... – EEM

+0

您是否尝试过提供的答案? – EEM

回答

0
Sub DeleteCheckboxandRow() 

Dim cb As CheckBox 

For Each cb In ActiveSheet.CheckBoxes 
    If cb.TopLeftCell.Row = ActiveCell.Row Then cb.Delete 
Next 
ActiveCell.EntireRow.Delete 
End Sub 
+1

我认为你应该给你的答案提供一个小的解释。 – JRodDynamite

0

我的要求的理解是:

  • 需要删除的ActiveSheet所有复选框后也删除Rows其中CheckBoxes放置。

让我们先来看看进入DrawingObjectsShapesPlacement财产。此属性(见Shape Members (Excel)

Shape.Placement属性(Excel)中 返回或设置表示 对象附加到它下面的细胞的方式有XlPlacement值

XlPlacement。枚举有这个可能的值:

名称:说明

xlFreeFloating:对象是自由浮动的。

xlMove:对象与单元格一起移动。

xlMoveAndSize:对象随着单元格移动和调整大小。

这意味着,如果一个CheckBox具有其Placement属性设置为xlFreeFloating它不会与小区移动时,它上面的行被删除,因此这CheckBox将不再是在预期的行。出于这个原因,在删除任何行之前,我们需要确保所有CheckBoxesPlacement属性不是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