Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
Ben Ben is offline
external usenet poster
 
Posts: 509
Default Macro loop problem

Hello, I'm very new to writing macros with the Visual Basic editor, so I was
wondering if someone could help me figure out why nothing happens when I run
the following macro:

Sub RowDeletingMacro()

x = 10

Do While Cells(x, 1).Value < ""
If Cells(x, 1).Value = 0 Then
Cells(x, 1).Rows(x).Select
Selection.Delete Shift:=xlUp
End If
x = x + 1
Loop

End Sub


My goal with this macro is to delete all rows in my worksheet that have "0"
as an entry in the first column, and to skip over all of the rows that do not
have 0 as their first column entry. Any help would be greatly appreciated,
thanks very much,

Ben
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,290
Default Macro loop problem


It looks right but it doesn't act right, because the "rows" property of a range
refers to the rows within the range - not the rows in the worksheet.
Since there is only one row in the range and you specify 10, it is referring
to the single cell 9 rows below - cells(19, 1).
To refer to the entire row of a worksheet, you need (surprise) the
"EntireRow" property.

Furthermore, Excel cannot keep track of the rows if they are deleted
from the top down - you would think the following would work but it skips
every other row...

Sub RowDeletingMacro()
Dim x As Long
x = 10
Do While Cells(x, 1).Value < ""
If Cells(x, 1).Value = 0 Then
Cells(x, 1).EntireRow.Delete Shift:=xlUp
End If
x = x + 1
Loop
End Sub
'--
Row 10 gets deleted, row 11 becomes row ten and the code is looking at
Row 11 - which was row 12 and so on.

You have to find the last row (or specify one) and work up...
For Rw = 99 to 2 Step -1
If Cells(Rw, 1).Value < "" Then
If Cells(Rw, 1).Value = 0 Then
Cells(Rw, 1).EntireRow.Delete
End If
End if
Next
--
Jim Cone
San Francisco, USA
http://www.realezsites.com/bus/primitivesoftware



"Ben"

wrote in message
Hello, I'm very new to writing macros with the Visual Basic editor, so I was
wondering if someone could help me figure out why nothing happens when I run
the following macro:

Sub RowDeletingMacro()
x = 10
Do While Cells(x, 1).Value < ""
If Cells(x, 1).Value = 0 Then
Cells(x, 1).Rows(x).Select
Selection.Delete Shift:=xlUp
End If
x = x + 1
Loop
End Sub
My goal with this macro is to delete all rows in my worksheet that have "0"
as an entry in the first column, and to skip over all of the rows that do not
have 0 as their first column entry. Any help would be greatly appreciated,
thanks very much,
Ben
  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 461
Default Macro loop problem

Try this

Sub RowDeletingMacro()

Do Until ActiveCell.Value = ""
If ActiveCell.Value = 0 Then
ActiveCell.EntireRow.Delete
Else ActiveCell.Offset(1,0).Activate
End If
Loop

End Sub

Start the activecell at the beginning of the column you want to check for 0.
Or if you want to run this sub numerous times put in
Range("YourStartingCell").Activate

lmk

"Ben" wrote:

Hello, I'm very new to writing macros with the Visual Basic editor, so I was
wondering if someone could help me figure out why nothing happens when I run
the following macro:

Sub RowDeletingMacro()

x = 10

Do While Cells(x, 1).Value < ""
If Cells(x, 1).Value = 0 Then
Cells(x, 1).Rows(x).Select
Selection.Delete Shift:=xlUp
End If
x = x + 1
Loop

End Sub


My goal with this macro is to delete all rows in my worksheet that have "0"
as an entry in the first column, and to skip over all of the rows that do not
have 0 as their first column entry. Any help would be greatly appreciated,
thanks very much,

Ben

  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 42
Default Macro loop problem

'Deletes all rows in the current worksheet in which the value of the 1st
column = 0
'NOTE: assumes that the 1st column is only numerical and has no blanks.
Public Sub RowDeletingMacro()

Dim curRow As Integer 'Which row we're examining
curRow = 1

While Cells(curRow, 1) < "" 'While the current row is
non-blank
If Cells(curRow, 1) = 0 Then 'If this is a row that we wish
to delete:
Rows(curRow).Select 'Select the row
Selection.Delete Shift:=x1Up 'Delete it, and shift all
rows under it up
Else 'If tthis is not a row that we
wish to delete:
curRow = curRow + 1 'Move on to a new row
End If
Wend

End Sub


"Ben" wrote:

Hello, I'm very new to writing macros with the Visual Basic editor, so I was
wondering if someone could help me figure out why nothing happens when I run
the following macro:

Sub RowDeletingMacro()

x = 10

Do While Cells(x, 1).Value < ""
If Cells(x, 1).Value = 0 Then
Cells(x, 1).Rows(x).Select
Selection.Delete Shift:=xlUp
End If
x = x + 1
Loop

End Sub


My goal with this macro is to delete all rows in my worksheet that have "0"
as an entry in the first column, and to skip over all of the rows that do not
have 0 as their first column entry. Any help would be greatly appreciated,
thanks very much,

Ben

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
Loop Problem Dave Birley Excel Programming 2 May 10th 07 07:17 PM
Macro - Loop/automatization problem Eirik Sævareid Excel Programming 1 January 20th 07 10:19 PM
For Loop Problem Brian Matlack[_75_] Excel Programming 2 May 15th 06 09:59 PM
Problem adding charts using Do-Loop Until loop Chris Bromley[_2_] Excel Programming 2 May 23rd 05 01:31 PM
For Next loop problem Jo[_6_] Excel Programming 2 June 26th 04 12:41 AM


All times are GMT +1. The time now is 01:25 AM.

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

About Us

"It's about Microsoft Excel"