Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 58
Default deleting rows based on criteria

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   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,494
Default deleting rows based on criteria

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   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 58
Default deleting rows based on criteria

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   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 69
Default deleting rows based on criteria

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   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 69
Default deleting rows based on criteria

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   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 69
Default deleting rows based on criteria

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   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,494
Default deleting rows based on criteria

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   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 221
Default deleting rows based on criteria

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
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Deleting Rows based on multiple criteria [email protected] Excel Programming 0 January 11th 07 07:40 PM
Deleting entire rows based on certain criteria Nan[_4_] Excel Programming 1 July 12th 04 05:04 PM
Deleting rows based on multiple criteria Sandip Shah Excel Programming 3 July 12th 04 01:57 PM
Deleting rows based on cell criteria jgranda Excel Programming 1 April 27th 04 06:41 PM
Deleting rows based on criteria John Walker[_2_] Excel Programming 2 December 12th 03 08:37 PM


All times are GMT +1. The time now is 11:44 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"