Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Dear All,
Using MS Excel 2002 I am trying to compare data in column A in sheet A with column A in Sheet B. For every match I want to delete the entire row in Sheet B. The code I wrote is as below i = 2 'Start of loop Sheets("A").Select store = Range("B" & i) Sheets("B").Select 'Columns("A:A").Select --may not be needed Selection.Find(What:=store, After:=ActiveCell, LookIn:=xlValues, _ LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _ MatchCase:=False).Activate On Error GoTo ErrTrap ActiveCell.EntireRow.Delete '..some more code GoTo Finally Loop For a case when a cell in SheetA.ColumnA does not have a match in SheetB.ColumnA and error is generated which gets handled by the ErrTrap. This works fine for the first time a match is not found. The second time a match is not found excel gives a run time error - Run-time error '91': Object variable or With blck variable not set Can anyone tell what is wrong with the code. Thank you in advance. Regards, Rahul |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Rahul
Maybe it's because you refer to Column B in Sheet A ? [Range("B" & i)] Why not turn it round and go from sheet B and look for matching entries in sheet A. You could use COUNTIF to check for a match. It's also better to work from the last row up so that you don't end up jumping over rows. Something like: Sub DeleteDuplicates() Dim LastRow As Long Dim i As Long Sheets("B").Activate LastRow = Range("A" & Rows.Count).End(xlUp).Row For i = LastRow To 1 Step -1 If WorksheetFunction.CountIf(Sheets("A").Range("A:A") , Range("A" & i)) 0 Then Range("A" & i).EntireRow.Delete End If Next 'i End Sub Regards Trevor "rahul_chatterjee" wrote in message om... Dear All, Using MS Excel 2002 I am trying to compare data in column A in sheet A with column A in Sheet B. For every match I want to delete the entire row in Sheet B. The code I wrote is as below i = 2 'Start of loop Sheets("A").Select store = Range("B" & i) Sheets("B").Select 'Columns("A:A").Select --may not be needed Selection.Find(What:=store, After:=ActiveCell, LookIn:=xlValues, _ LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _ MatchCase:=False).Activate On Error GoTo ErrTrap ActiveCell.EntireRow.Delete '..some more code GoTo Finally Loop For a case when a cell in SheetA.ColumnA does not have a match in SheetB.ColumnA and error is generated which gets handled by the ErrTrap. This works fine for the first time a match is not found. The second time a match is not found excel gives a run time error - Run-time error '91': Object variable or With blck variable not set Can anyone tell what is wrong with the code. Thank you in advance. Regards, Rahul |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I thank Trevor for pointing out the error I made in my effort to
simplify the code for the newsgroup. i = 2 'Start of loop Sheets("A").Select store = Range("A" & i) '---and not Range("B" & i) as in my previous post Sheets("B").Select 'Columns("A:A").Select --may not be needed Selection.Find(What:=store, After:=ActiveCell, LookIn:=xlValues, _ LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _ MatchCase:=False).Activate On Error GoTo ErrTrap ActiveCell.EntireRow.Delete '..some more code GoTo Finally 'some more code 'Finally block Loop The code still gives the error. Any help shall be appreciated. Best Regards, Rahul "Trevor Shuttleworth" wrote in message ... Rahul Maybe it's because you refer to Column B in Sheet A ? [Range("B" & i)] Why not turn it round and go from sheet B and look for matching entries in sheet A. You could use COUNTIF to check for a match. It's also better to work from the last row up so that you don't end up jumping over rows. Something like: Sub DeleteDuplicates() Dim LastRow As Long Dim i As Long Sheets("B").Activate LastRow = Range("A" & Rows.Count).End(xlUp).Row For i = LastRow To 1 Step -1 If WorksheetFunction.CountIf(Sheets("A").Range("A:A") , Range("A" & i)) 0 Then Range("A" & i).EntireRow.Delete End If Next 'i End Sub Regards Trevor "rahul_chatterjee" wrote in message om... Dear All, Using MS Excel 2002 I am trying to compare data in column A in sheet A with column A in Sheet B. For every match I want to delete the entire row in Sheet B. The code I wrote is as below i = 2 'Start of loop Sheets("A").Select store = Range("B" & i) Sheets("B").Select 'Columns("A:A").Select --may not be needed Selection.Find(What:=store, After:=ActiveCell, LookIn:=xlValues, _ LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _ MatchCase:=False).Activate On Error GoTo ErrTrap ActiveCell.EntireRow.Delete '..some more code GoTo Finally Loop For a case when a cell in SheetA.ColumnA does not have a match in SheetB.ColumnA and error is generated which gets handled by the ErrTrap. This works fine for the first time a match is not found. The second time a match is not found excel gives a run time error - Run-time error '91': Object variable or With blck variable not set Can anyone tell what is wrong with the code. Thank you in advance. Regards, Rahul |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]() |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Find last cell in a column, Delete its contents and make it active | Excel Worksheet Functions | |||
Find last cell in a column, Delete its contents and make it ac | Excel Worksheet Functions | |||
FInd common data in one column then add number in adjacent column | Excel Worksheet Functions | |||
how to find the data after we delete | Excel Discussion (Misc queries) | |||
macro to find something in column A and delete 5 rows below it | Excel Programming |