使用基于search的dynamic行参考来定位范围

我真的是新的VBA编码,并已经做得很好,但我现在已经打破了工作表的最后(可能比它需要更复杂)macros的墙。 我一直在努力使整个周末通过多个谷歌search工作,并使用从stackoverflow的其他问题的各种答案编译我自己的脚本,但无济于事。 这是我到目前为止(道歉的程序员,我知道这看起来像它是由一个3岁的):

Sub Build_Delete() Dim rngA As Range Dim cell As Range Set rngA = Worksheets("Database").Range("D9:D177").End(xlUp) For Each cell In rngA If cell.Value = Range("A2").Value Then cell.Select Range("D" & ActiveCell.Row & ":AB" & ActiveCell.Row).Select Selection.Delete End If Next cell End Sub 

上面的作品,没有错误返回,但它没有做任何明显的。

我知道这很可能是残酷的,所以这就是我想要做的:

Database!D9:D177包含D到AB(4到28)列中的一组数据的标题。

有一个ActiveXsearch框,实时search单元Database!A2 ,不pipesearch结果如何(例如“Test”inputsearch框,“Test”出现在单元Database!A2中)。

当我运行这个macros的时候,我想让它检查Database!D9:D177范围,findDatabase!A2的文本string,然后删除该行的D到AB的内容(例如A2 =“test”,find“testing“在单元格D21,删除D21:AB21)。

这个行是一个dynamic的值,这是主要抛出我的东西,但列是固定的。

另外,macros的button位于单独的工作表(Front Page!)上,但脚本将只在数据库上运行! 页。

只需要在excel中工作,而不是在公开的办公室。

只有其他的事情我可以想到的是,相关的是,单元格可以在删除后留空,他们不需要填充,工作表将永远不需要打印,所以边际不是问题。

或者我想添加一个“你确定吗?”是在脚本开始的时候是“不”Msgbox,但我可以稍后再玩,因为我知道我正在用这个运气。

任何帮助将不胜感激!

我总是发现使用FIND而不是检查每个单元格的值会更快。
如果你想在重复的情况下find所有的值,你可以继续使用.FINDNEXT(rFound)https://msdn.microsoft.com/en-us/library/office/ff839746.aspx

 Public Sub Build_Delete() Dim rngA As Range Dim rFound As Range Dim wrkSht As Worksheet Set wrkSht = ThisWorkbook.Worksheets("Database") Set rngA = wrkSht.Range("D9:D177") With rngA Set rFound = .Find(wrkSht.Range("A2"), LookIn:=xlValues, LookAt:=xlWhole) If Not rFound Is Nothing Then If MsgBox(rFound.Value & " found on row " & rFound.Row & "." & vbCr & _ "Delete?", vbInformation + vbYesNo) = vbYes Then rFound.EntireRow.Delete Shift:=xlUp End If End If End With End Sub