ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Delete rows based on comparison criteria (https://www.excelbanter.com/excel-programming/304648-delete-rows-based-comparison-criteria.html)

jeffbert

Delete rows based on comparison criteria
 
I have a macro that deletes rows in a column if they meet a definite value that is entered into an input box. However, the need has arisen to be able to use evaluative criteria in this input box. i.e. if a150% then delete entire row. Here is the original code that I received from these newsgroups, sorry, I can't remember the author!!

Thanks

Jeff Bertram

Sub Delete_row()
Dim Lrow As Long
Dim CalcMode As Long
Dim StartRow As Long
Dim EndRow As Long
Dim findstring As String

With Application
CalcMode = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With

findstring = InputBox("Enter a Search value")
If Trim(findstring) < "" Then

With ActiveSheet
.DisplayPageBreaks = False
StartRow = 1
EndRow = .Cells(.Rows.Count, ActiveCell.Column).End(xlUp).Row
For Lrow = EndRow To StartRow Step -1
If IsError(.Cells(Lrow, ActiveCell.Column).Value) Then
'Do nothing, This avoid a error if there is a error in the cell

ElseIf .Cells(Lrow, ActiveCell.Column).Value = findstring Then .Rows(Lrow).Delete

End If
Next
End With
End If
With Application
.ScreenUpdating = True
.Calculation = CalcMode
End With
End Sub

mark E. Philpot

Delete rows based on comparison criteria
 
Send me a dummy sheet and I will put something together.
You need a userform rather than input boxes jumping at
you.

regards
Mark E. Philpot


see my samples at:
http://au.geocities.com/excelmarksway
http://www.geocities.com/excelmarksway
-----Original Message-----
I have a macro that deletes rows in a column if they meet

a definite value that is entered into an input box.
However, the need has arisen to be able to use evaluative
criteria in this input box. i.e. if a150% then delete
entire row. Here is the original code that I received from
these newsgroups, sorry, I can't remember the author!!

Thanks

Jeff Bertram

Sub Delete_row()
Dim Lrow As Long
Dim CalcMode As Long
Dim StartRow As Long
Dim EndRow As Long
Dim findstring As String

With Application
CalcMode = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With

findstring = InputBox("Enter a Search value")
If Trim(findstring) < "" Then

With ActiveSheet
.DisplayPageBreaks = False
StartRow = 1
EndRow = .Cells(.Rows.Count,

ActiveCell.Column).End(xlUp).Row
For Lrow = EndRow To StartRow Step -1
If IsError(.Cells(Lrow,

ActiveCell.Column).Value) Then
'Do nothing, This avoid a error if

there is a error in the cell

ElseIf .Cells(Lrow,

ActiveCell.Column).Value = findstring Then .Rows
(Lrow).Delete

End If
Next
End With
End If
With Application
.ScreenUpdating = True
.Calculation = CalcMode
End With
End Sub
.


Ron de Bruin

Delete rows based on comparison criteria
 
Hi jeffbert

With the first row as Header try this

Sub Delete_with_Autofilter()
Dim DeleteValue As String
Dim rng As Range

DeleteValue = "50%"

With ActiveSheet
.Columns(ActiveCell.Column).AutoFilter Field:=1, Criteria1:=DeleteValue
With ActiveSheet.AutoFilter.Range
On Error Resume Next
Set rng = .Offset(1, 0).Resize(.Rows.Count - 1, 1) _
.SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Not rng Is Nothing Then rng.EntireRow.Delete

End With
.AutoFilterMode = False
End With
End Sub


--
Regards Ron de Bruin
http://www.rondebruin.nl


"jeffbert" wrote in message ...
I have a macro that deletes rows in a column if they meet a definite value that is entered into an input box. However, the need

has arisen to be able to use evaluative criteria in this input box. i.e. if a150% then delete entire row. Here is the original
code that I received from these newsgroups, sorry, I can't remember the author!!

Thanks

Jeff Bertram

Sub Delete_row()
Dim Lrow As Long
Dim CalcMode As Long
Dim StartRow As Long
Dim EndRow As Long
Dim findstring As String

With Application
CalcMode = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With

findstring = InputBox("Enter a Search value")
If Trim(findstring) < "" Then

With ActiveSheet
.DisplayPageBreaks = False
StartRow = 1
EndRow = .Cells(.Rows.Count, ActiveCell.Column).End(xlUp).Row
For Lrow = EndRow To StartRow Step -1
If IsError(.Cells(Lrow, ActiveCell.Column).Value) Then
'Do nothing, This avoid a error if there is a error in the cell

ElseIf .Cells(Lrow, ActiveCell.Column).Value = findstring Then .Rows(Lrow).Delete

End If
Next
End With
End If
With Application
.ScreenUpdating = True
.Calculation = CalcMode
End With
End Sub





All times are GMT +1. The time now is 04:33 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com