I am sorry for my english.I am trying to do my best for my english.
Row 12 still exist because I am only interested in first keyword (keyword in row is:"there is no guarentee") which is in row 5.
http://sketchtoy.com/49962974
I am sorry for my english.I am trying to do my best for my english.
Row 12 still exist because I am only interested in first keyword (keyword in row is:"there is no guarentee") which is in row 5.
http://sketchtoy.com/49962974
Hi, zeroist,
maybe this code will perform as you wish:
![]()
Sub SearchItemsInWorkbook(strSearch As String, lngOffNeg As Long, lngOffPos As Long, blnDelete As Boolean, lngFirst As Long) ' strSearch: item to search for as part of teh cells ' lngOffNeg: number of rows above the found cell to be deleted, should be entered as positiv number! ' lngOffPos: number of rows below the found cell to be deleted, should be entered as positiv number! ' blnDelete: deicdes on TRUE to delete or FALSE to color ' lngFirst: 0 deletes any occurrance of the item ' 1 deletes the first occurrance of the item ' 2 deletes the last occurrance of the item Dim wsTab As Worksheet Dim rngCell As Range Dim rngDelete As Range Dim strAddress As String Dim strTempAdr As String Dim blnLoopOn As Boolean Dim blnFirst As Boolean If lngFirst < 0 And lngFirst > 2 Then MsgBox "Value for parameter of what to delete is out of range available (must be 0 for all, 1 for first, 2 for last)!" Exit Sub End If For Each wsTab In ActiveWorkbook.Worksheets blnLoopOn = True Set rngCell = wsTab.Cells.Find(what:=strSearch, lookAt:=xlPart) If Not rngCell Is Nothing Then Set rngDelete = rngCell Set rngDelete = Union(rngDelete, rngCell.Offset(-lngOffNeg, 0).Resize(lngOffNeg + 1)) Set rngDelete = Union(rngDelete, rngCell.Resize(lngOffPos + 1)) Select Case lngFirst Case 0, 2 strAddress = rngCell.Address Do While blnLoopOn Set rngCell = wsTab.Cells.FindNext(After:=rngCell) blnLoopOn = rngCell.Address <> strAddress If Not rngCell Is Nothing And rngCell.Address <> strAddress Then strTempAdr = rngCell.Address Set rngDelete = Union(rngDelete, rngCell.Offset(-lngOffNeg, 0).Resize(lngOffNeg + 1)) Set rngDelete = Union(rngDelete, rngCell.Resize(lngOffPos + 1)) Else blnLoopOn = False End If Loop Case Else End Select End If If lngFirst = 2 Then If Len(strTempAdr) > 0 Then Set rngDelete = wsTab.Range(strTempAdr) Set rngDelete = Union(rngDelete, rngCell.Offset(-lngOffNeg, 0).Resize(lngOffNeg + 1)) Set rngDelete = Union(rngDelete, rngCell.Resize(lngOffPos + 1)) End If End If If Not rngDelete Is Nothing Then If blnDelete Then rngDelete.EntireRow.Delete Else rngDelete.Interior.ColorIndex = 6 End If End If Set rngDelete = Nothing Next wsTab Set rngCell = Nothing End Sub
Ciao,![]()
Sub EF953570_3() 'will call procedure and hand over item to serach, the number of rows above (eneterd asp positive number) as 'well as number of rows below found to delete and advise to delete or just color Call SearchItemsInWorkbook("there is no guarentee", 3, 0, True, 1) Call SearchItemsInWorkbook("ringtone to your cell", 0, 3, True, 2) End Sub
Holger
Use Code-Tags for showing your code: [code] Your Code here [/code]
Please mark your question Solved if there has been offered a solution that works fine for you
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks