如果工作表“X”中的单元格包含工作表“y”的名称,则删除工作表'x'

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

题:

我想运行一个采用表单名称(这是当前活动表单)的macros,并使用它来删除表单“PD”中的每一行,其中包含“M”列中的“上一个活动表单”的名称”。 比macros应该回到那个“以前的活动工作表”,并填充一些颜色的单元格(该部分应该是确定的)

我尝试了几件事,并在下面的其他主题的帮助下,loggingbutton,我设法得到这个代码,这是行不通的

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 

激活工作表: 如何激活Excel中的特定工作表

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

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

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

 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中“激活”或“select”anyhting,这只是人类必须做的事情,因此MacroRecorder使用它…