Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I am copying a text file into excel (all one column A) from a database and
want to delete rows that have the following information: the date for example 08/14/2008 followed by QMS Log Page 69 of 79 (this will of course be 1 of 79 etc). I have tried to use some of the threads seen in this discussion group in a macro but with no luck. My attempt is Sub testme02() Dim MyRng As Range Dim FoundCell As Range Dim wks As Worksheet Dim myStrings As Variant Dim iCtr As Long myStrings = Array("QMS Log Page") 'add more strings if you need Set wks = ActiveSheet With wks Set MyRng = .Range("a2:a" & .Rows.Count) End With For iCtr = LBound(myStrings) To UBound(myStrings) Do With MyRng Set FoundCell = .Cells.Find(what:=myStrings(iCtr), _ after:=.Cells(.Cells.Count), _ LookIn:=xlValues, _ lookat:=xlWhole, _ searchorder:=xlByRows, _ searchdirection:=xlNext, _ MatchCase:=False) If FoundCell Is Nothing Then Exit Do Else FoundCell.EntireRow.Delete End If End With Loop Next iCtr End Sub |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
look at findnext in vb help.
-- Gary "gbpg" wrote in message ... I am copying a text file into excel (all one column A) from a database and want to delete rows that have the following information: the date for example 08/14/2008 followed by QMS Log Page 69 of 79 (this will of course be 1 of 79 etc). I have tried to use some of the threads seen in this discussion group in a macro but with no luck. My attempt is Sub testme02() Dim MyRng As Range Dim FoundCell As Range Dim wks As Worksheet Dim myStrings As Variant Dim iCtr As Long myStrings = Array("QMS Log Page") 'add more strings if you need Set wks = ActiveSheet With wks Set MyRng = .Range("a2:a" & .Rows.Count) End With For iCtr = LBound(myStrings) To UBound(myStrings) Do With MyRng Set FoundCell = .Cells.Find(what:=myStrings(iCtr), _ after:=.Cells(.Cells.Count), _ LookIn:=xlValues, _ lookat:=xlWhole, _ searchorder:=xlByRows, _ searchdirection:=xlNext, _ MatchCase:=False) If FoundCell Is Nothing Then Exit Do Else FoundCell.EntireRow.Delete End If End With Loop Next iCtr End Sub |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Sorry that does not help
"Gary Keramidas" wrote: look at findnext in vb help. -- Gary "gbpg" wrote in message ... I am copying a text file into excel (all one column A) from a database and want to delete rows that have the following information: the date for example 08/14/2008 followed by QMS Log Page 69 of 79 (this will of course be 1 of 79 etc). I have tried to use some of the threads seen in this discussion group in a macro but with no luck. My attempt is Sub testme02() Dim MyRng As Range Dim FoundCell As Range Dim wks As Worksheet Dim myStrings As Variant Dim iCtr As Long myStrings = Array("QMS Log Page") 'add more strings if you need Set wks = ActiveSheet With wks Set MyRng = .Range("a2:a" & .Rows.Count) End With For iCtr = LBound(myStrings) To UBound(myStrings) Do With MyRng Set FoundCell = .Cells.Find(what:=myStrings(iCtr), _ after:=.Cells(.Cells.Count), _ LookIn:=xlValues, _ lookat:=xlWhole, _ searchorder:=xlByRows, _ searchdirection:=xlNext, _ MatchCase:=False) If FoundCell Is Nothing Then Exit Do Else FoundCell.EntireRow.Delete End If End With Loop Next iCtr End Sub |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
On Aug 15, 11:53*am, gbpg wrote:
Sorry that does not help "Gary Keramidas" wrote: look at findnext in vb help. -- Gary "gbpg" wrote in message ... I am copying a text file into excel (all one column A) from a database and want to delete rows that have the following information: the date for example 08/14/2008 followed by QMS Log Page 69 of 79 (this will of course be 1 of 79 etc). I have tried to use some of the threads seen in this discussion group in a macro but with no luck. My attempt is Sub testme02() * *Dim MyRng As Range * *Dim FoundCell As Range * *Dim wks As Worksheet * *Dim myStrings As Variant * *Dim iCtr As Long * *myStrings = Array("QMS Log Page") 'add more strings if you need * *Set wks = ActiveSheet * *With wks * * * *Set MyRng = .Range("a2:a" & .Rows.Count) * *End With * *For iCtr = LBound(myStrings) To UBound(myStrings) * * * *Do * * * * * *With MyRng * * * * * * * *Set FoundCell = .Cells.Find(what:=myStrings(iCtr), _ * * * * * * * * * * * * * * * * * *after:=.Cells(.Cells.Count), _ * * * * * * * * * * * * * * * * * *LookIn:=xlValues, _ * * * * * * * * * * * * * * * * * *lookat:=xlWhole, _ * * * * * * * * * * * * * * * * * *searchorder:=xlByRows, _ * * * * * * * * * * * * * * * * * *searchdirection:=xlNext, _ * * * * * * * * * * * * * * * * * *MatchCase:=False) * * * * * * * *If FoundCell Is Nothing Then * * * * * * * * * *Exit Do * * * * * * * *Else * * * * * * * * * *FoundCell.EntireRow.Delete * * * * * * * *End If * * * * * *End With * * * *Loop * *Next iCtr End Sub Try this... Dim MyRng As Range Dim FoundCell As Range Dim wks As Worksheet Dim myStrings As Variant Dim iCtr As Long myStrings = Array("QMS Log Page") 'add more strings if you need Set wks = ActiveSheet With wks Set MyRng = .Range("a2:a" & .Rows.Count) End With For iCtr = LBound(myStrings) To UBound(myStrings) Do With MyRng Set FoundCell = .Cells.Find what:= "*" & myStrings(iCtr) & "*" ' this will find anything that contains your sting If FoundCell Is Nothing Then Exit Do Else FoundCell.EntireRow.Delete End If End With Loop Next iCtr End Sub Looking at your original code there were two lines that jumped out... lookat:=xlWhole - You said your string starts with a date then QMS etc. this would only find those cells that match exactly "QMS Log Page" after:=.Cells(.Cells.Count) - I am not sure what the point of this is? James |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
On Aug 15, 12:25*pm, wrote:
On Aug 15, 11:53*am, gbpg wrote: Sorry that does not help "Gary Keramidas" wrote: look at findnext in vb help. -- Gary "gbpg" wrote in message ... I am copying a text file into excel (all one column A) from a database and want to delete rows that have the following information: the date for example 08/14/2008 followed by QMS Log Page 69 of 79 (this will of course be 1 of 79 etc). I have tried to use some of the threads seen in this discussion group in a macro but with no luck. My attempt is Sub testme02() * *Dim MyRng As Range * *Dim FoundCell As Range * *Dim wks As Worksheet * *Dim myStrings As Variant * *Dim iCtr As Long * *myStrings = Array("QMS Log Page") 'add more strings if you need * *Set wks = ActiveSheet * *With wks * * * *Set MyRng = .Range("a2:a" & .Rows.Count) * *End With * *For iCtr = LBound(myStrings) To UBound(myStrings) * * * *Do * * * * * *With MyRng * * * * * * * *Set FoundCell = .Cells.Find(what:=myStrings(iCtr), _ * * * * * * * * * * * * * * * * * *after:=.Cells(.Cells.Count), _ * * * * * * * * * * * * * * * * * *LookIn:=xlValues, _ * * * * * * * * * * * * * * * * * *lookat:=xlWhole, _ * * * * * * * * * * * * * * * * * *searchorder:=xlByRows, _ * * * * * * * * * * * * * * * * * *searchdirection:=xlNext, _ * * * * * * * * * * * * * * * * * *MatchCase:=False) * * * * * * * *If FoundCell Is Nothing Then * * * * * * * * * *Exit Do * * * * * * * *Else * * * * * * * * * *FoundCell.EntireRow.Delete * * * * * * * *End If * * * * * *End With * * * *Loop * *Next iCtr End Sub Try this... * * Dim MyRng As Range * * Dim FoundCell As Range * * Dim wks As Worksheet * * Dim myStrings As Variant * * Dim iCtr As Long * * myStrings = Array("QMS Log Page") 'add more strings if you need * * Set wks = ActiveSheet * * With wks * * * * Set MyRng = .Range("a2:a" & .Rows.Count) * * End With * * For iCtr = LBound(myStrings) To UBound(myStrings) * * * * Do * * * * * * With MyRng * * * * * * * * Set FoundCell = .Cells.Find what:= "*" & myStrings(iCtr) & "*" ' this will find anything that contains your sting * * * * * * * * If FoundCell Is Nothing Then * * * * * * * * * * Exit Do * * * * * * * * Else * * * * * * * * * * FoundCell.EntireRow.Delete * * * * * * * * End If * * * * * * End With * * * * Loop * * Next iCtr End Sub Looking at your original code there were two lines that jumped out... lookat:=xlWhole - You said your string starts with a date then QMS etc. this would only find those cells that match exactly "QMS Log Page" after:=.Cells(.Cells.Count) - I am not sure what the point of this is? James Thinking about it would it not be easier just to use the autofilter? Dim MyRng As Range Dim FoundCell As Range Dim wks As Worksheet Dim myStrings As Variant Dim iCtr As Long myStrings = Array("QMS Log Page") 'add more strings if you need Set wks = ActiveSheet With wks Set MyRng = .Range("a2:a" & .Rows.Count) set MyDeleteRng = .Range("a3:a" & .rows.count) ' This assumes header information in row 2? End With For iCtr = LBound(myStrings) To UBound(myStrings) MyRng.Autofilter 1, "*" myStrings(iCtr) & "*" MyDeleteRng.entirerow.delete Next iCtr myRng.AutofIlter ' switch the autofilter off End Sub James |
#6
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
On Aug 15, 12:32*pm, wrote:
On Aug 15, 12:25*pm, wrote: On Aug 15, 11:53*am, gbpg wrote: Sorry that does not help "Gary Keramidas" wrote: look at findnext in vb help. -- Gary "gbpg" wrote in message ... I am copying a text file into excel (all one column A) from a database and want to delete rows that have the following information: the date for example 08/14/2008 followed by QMS Log Page 69 of 79 (this will of course be 1 of 79 etc). I have tried to use some of the threads seen in this discussion group in a macro but with no luck. My attempt is Sub testme02() * *Dim MyRng As Range * *Dim FoundCell As Range * *Dim wks As Worksheet * *Dim myStrings As Variant * *Dim iCtr As Long * *myStrings = Array("QMS Log Page") 'add more strings if you need * *Set wks = ActiveSheet * *With wks * * * *Set MyRng = .Range("a2:a" & .Rows.Count) * *End With * *For iCtr = LBound(myStrings) To UBound(myStrings) * * * *Do * * * * * *With MyRng * * * * * * * *Set FoundCell = .Cells.Find(what:=myStrings(iCtr), _ * * * * * * * * * * * * * * * * * *after:=.Cells(.Cells.Count), _ * * * * * * * * * * * * * * * * * *LookIn:=xlValues, _ * * * * * * * * * * * * * * * * * *lookat:=xlWhole, _ * * * * * * * * * * * * * * * * * *searchorder:=xlByRows, _ * * * * * * * * * * * * * * * * * *searchdirection:=xlNext, _ * * * * * * * * * * * * * * * * * *MatchCase:=False) * * * * * * * *If FoundCell Is Nothing Then * * * * * * * * * *Exit Do * * * * * * * *Else * * * * * * * * * *FoundCell.EntireRow.Delete * * * * * * * *End If * * * * * *End With * * * *Loop * *Next iCtr End Sub Try this... * * Dim MyRng As Range * * Dim FoundCell As Range * * Dim wks As Worksheet * * Dim myStrings As Variant * * Dim iCtr As Long * * myStrings = Array("QMS Log Page") 'add more strings if you need * * Set wks = ActiveSheet * * With wks * * * * Set MyRng = .Range("a2:a" & .Rows.Count) * * End With * * For iCtr = LBound(myStrings) To UBound(myStrings) * * * * Do * * * * * * With MyRng * * * * * * * * Set FoundCell = .Cells.Find what:= "*" & myStrings(iCtr) & "*" ' this will find anything that contains your sting * * * * * * * * If FoundCell Is Nothing Then * * * * * * * * * * Exit Do * * * * * * * * Else * * * * * * * * * * FoundCell.EntireRow.Delete * * * * * * * * End If * * * * * * End With * * * * Loop * * Next iCtr End Sub Looking at your original code there were two lines that jumped out... lookat:=xlWhole - You said your string starts with a date then QMS etc. this would only find those cells that match exactly "QMS Log Page" after:=.Cells(.Cells.Count) - I am not sure what the point of this is? James Thinking about it would it not be easier just to use the autofilter? * * Dim MyRng As Range * * Dim FoundCell As Range * * Dim wks As Worksheet * * Dim myStrings As Variant * * Dim iCtr As Long * * myStrings = Array("QMS Log Page") 'add more strings if you need * * Set wks = ActiveSheet * * With wks * * * * Set MyRng = .Range("a2:a" & .Rows.Count) * * * * set MyDeleteRng = .Range("a3:a" & .rows.count) ' This assumes header information in row 2? * * End With * * For iCtr = LBound(myStrings) To UBound(myStrings) * * * * MyRng.Autofilter 1, "*" myStrings(iCtr) & "*" * * * * MyDeleteRng.entirerow.delete * * Next iCtr * * myRng.AutofIlter ' switch the autofilter off End Sub James This line: MyRng.Autofilter 1, "*" myStrings(iCtr) & "*" should be: MyRng.Autofilter 1, "*" & myStrings(iCtr) & "*" James |
#7
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
try changing this:
lookat:=xlWhole to this: lookat:=xlPart -- Gary "gbpg" wrote in message ... Sorry that does not help "Gary Keramidas" wrote: look at findnext in vb help. -- Gary "gbpg" wrote in message ... I am copying a text file into excel (all one column A) from a database and want to delete rows that have the following information: the date for example 08/14/2008 followed by QMS Log Page 69 of 79 (this will of course be 1 of 79 etc). I have tried to use some of the threads seen in this discussion group in a macro but with no luck. My attempt is Sub testme02() Dim MyRng As Range Dim FoundCell As Range Dim wks As Worksheet Dim myStrings As Variant Dim iCtr As Long myStrings = Array("QMS Log Page") 'add more strings if you need Set wks = ActiveSheet With wks Set MyRng = .Range("a2:a" & .Rows.Count) End With For iCtr = LBound(myStrings) To UBound(myStrings) Do With MyRng Set FoundCell = .Cells.Find(what:=myStrings(iCtr), _ after:=.Cells(.Cells.Count), _ LookIn:=xlValues, _ lookat:=xlWhole, _ searchorder:=xlByRows, _ searchdirection:=xlNext, _ MatchCase:=False) If FoundCell Is Nothing Then Exit Do Else FoundCell.EntireRow.Delete End If End With Loop Next iCtr End Sub |
#8
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
try this
Although not tested. Sub Remove_Foreign() Dim Firstrow As Long Dim Lastrow As Long Dim Lrow As Long With Application CalcMode = .Calculation .Calculation = xlCalculationManual End With With Sheets("yoursheet") .Select Firstrow = yourfirstrow Lastrow = yourlastrow For Lrow = Lastrow To Firstrow Step -1 With .Cells(Lrow, "A") If Not IsError(.Value) Then If .Value = "*"&"QMS"&"*" Then .EntireRow.ClearContents End If End With Next Lrow End With With Application CalcMode = .Calculation .Calculation = xlAutomatic End With End Sub HTH Mark. |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Deleting Rows based on multiple criteria | Excel Programming | |||
Deleting entire rows based on certain criteria | Excel Programming | |||
Deleting rows based on multiple criteria | Excel Programming | |||
Deleting rows based on cell criteria | Excel Programming | |||
Deleting rows based on criteria | Excel Programming |