p2p.wrox.com Forums

p2p.wrox.com Forums (http://p2p.wrox.com/index.php)
-   Excel VBA (http://p2p.wrox.com/forumdisplay.php?f=79)
-   -   entireRow delete problem (http://p2p.wrox.com/showthread.php?t=66262)

cronid February 28th, 2008 10:59 AM

entireRow delete problem
 
I've got an Excel spreadsheet with 55,000 rows. The name in the third colum repeats for different colleagues in the 13th column. I've written the following VB code to append the colleague name and delete the repeat rows. It works fine until it gets to the 4,000th row. After that the deletes don't work and the program loops appending the same name to the 13th column. There's nothing different about the 4,000th row but I've deleted it as a test. But to no avail. The statement Selection.Rows(rwIndex).EntireRow.Delete does not work when rwIndex gets to 4,000. Does anyone have a suggestion?

Sub CompanyCoverage()
'
'
Dim rwIndex As Integer
Dim prev_name As String
Sheet1.Select
Worksheets("CompanyCoverage1").Select

rwIndex = 1
prev_name = Cells(rwIndex, 3).Value
MsgBox " prev_name is " & prev_name
rwIndex = rwIndex + 1

Do Until rwIndex > 4100
If Cells(rwIndex, 3).Value <> prev_name Then
prev_name = Cells(rwIndex, 3).Value
rwIndex = rwIndex + 1
Else
Cells(rwIndex - 1, 13).Value = Cells(rwIndex - 1, 13).Value & "; " & Cells(rwIndex, 13).Value
'MsgBox " index is " & rwIndex
Selection.Rows(rwIndex).EntireRow.Delete
End If

Loop
End Sub


Local Time: 09:58 AM
Local Date: 02-28-2008
Location:




There are 10 kinds of people in the world - those that understand binary and those that don't.

stanleydgromjr March 4th, 2008 08:14 PM

cronid,

To be able to access all the rows in:
Excel 2003 contains 65,536 rows.
Excel 2007 contains 1,048,567 rows.

Integer variables are stored as 16-bit (2-byte) numbers ranging in value from -32,768 to 32,767.

Long (long integer) variables are stored as signed 32-bit (4-byte) numbers ranging in value from -2,147,483,648 to 2,147,483,647.

I would change this line of code:
Dim rwIndex As Integer

to this:
Dim rwIndex As Long


Have a great day,
Stan

stanleydgromjr

Windows Vista Business and Excel 2003, 2007.

stanleydgromjr March 4th, 2008 08:20 PM

cronid,

One more thing.

This line of code:
Do Until rwIndex > 4100

may stop around row 4000 if the macro has already deleted 100 or more rows.

When deleting rows, I usually start from the last row of data to the first, with a For Next loop:
For lngLoopCtr = lngLastRow To 1 Step -1
    'your code goes here
Next lngLoopCtr


Have a great day,
Stan

stanleydgromjr

Windows Vista Business and Excel 2003, 2007.


All times are GMT -4. The time now is 09:25 AM.

Powered by vBulletin®
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
© 2013 John Wiley & Sons, Inc.