删除行表' x'如果单元格中的单元格' X'包含表格的名称' y'

时间:2016-04-25 14:19:37

标签: excel vba excel-vba

第二个Q在这里,仍在学习,但努力做到最好!

问题:

我想运行一个宏,它取一个工作表的名称(当时是活动工作表)并用它来删除工作表中的每一行" PD"其中包含该名称"以前的活动表格"在专栏" M"。比宏应该回到那个"之前的活动表"并用颜色填充一些单元格(该部分应该没问题)

我尝试了一些事情,并在下面的其他主题的帮助下和记录按钮,我设法得到这个代码,这不起作用

Sub FindandDelete
Sheets("PD").Select
Range("M").Select
With ActiveSheet
.AutoFilterMode = False
With Range("M1", Range("M" & Rows.Count).End(xlUp))
    .AutoFilter 1, ActiveSheet.Previous.Name.Select
    On Error Resume Next
    .Offset(1).SpecialCells(12).EntireRow.Delete
End With
.AutoFilterMode = False
End With
ActiveSheet.Previous.Select
Range("N16,N17").Select
With Selection.Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .Color = 49407
    .TintAndShade = 0
    .PatternTintAndShade = 0
End With
Range("A1").Select
End Sub

对于激活表: How to activate a specific worksheet in Excel

删除行: http://www.mrexcel.com/forum/excel-questions/537771-delete-row-if-specific-cell-value-matches-value-found-another-worksheet.html

希望任何人都可以提供帮助,如果需要更多努力或解释,请高兴听到。

1 个答案:

答案 0 :(得分:2)

说实话,你的代码可能会有一些调整,但我宁愿从头开始使用它:

Sub FindAndDelete
    Dim strAName As String
    Dim lngCounter as Long
    strAName = ActiveSheet.Name

    With Worksheets("PD")
        For lngCounter = .Cells(Rows.Count, 13).End(xlUp).row to 1  Step -1
            if .Cells(lngcounter, 13).value = strAName then
                .Rows(lngCounter).Delete
            end if
        Next lngCounter
    End with

    'Do your coloring stuff, which you said is fine now
End Sub

您应该避免更换床单。通常没有必要激活"或"选择"无论在VBA中,它只是人类必须要做的事情,因此MacroRecorder使用它......