Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Excel / Programming / January 2006

Tip: Looking for answers? Try searching our database.

Help With Insert Row Macro

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
ksp - 19 Jan 2006 05:30 GMT
I need some help with a macro to insert one row at a point where there
is text in a particular column.

The worksheet has multiple columns, but the two relevant ones are
headed Category (Column A) and Tasks (Column D). Each Category
description has at least one task, but can have up to 20. I have been
using the macro below to insert one row before each new category.
However, what I have discovered is that this is actual inserting one
row after the category description. This is fine as long as there is
only ever one task, but this is not the case.

Everything that I have tried so far seems to only cause the macro to go
into a loop

Any input / help would be appreciated

Thanks

Karen

Sub InsertRows()
With Range("A10:A2498")
On Error Resume Next
Set C = .Find(What:="*", LookIn:=xlValues)
If Not C Is Nothing Then
firstAddress = C.Address
Do
C.Offset(1, 0).EntireRow.Insert
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> firstAddress
End If
End With
End Sub

Signature

ksp

Anita - 19 Jan 2006 05:56 GMT
Hi Karen,

The reason you were getting stuck in the loop is the loop while check
was looking for something in the firstAddress in which you found text.
But once you found it the first time, you shift it down, so the loop
will never find anything in that cell again.  Try the following:

Sub InsertRows()
With Range("A10:A2498")
On Error Resume Next
Set C = .Find(What:="*", LookIn:=xlValues)
If Not C Is Nothing Then
firstaddress = C.Offset(1, 0).Address
Do
C.Offset(-1, 0).EntireRow.Insert
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address > firstaddress
End If
End With
End Sub

Hope this works for you,
Anita
ksp - 19 Jan 2006 06:15 GMT
Hi Anita

It sort of worked. I am no longer getting the endless loop, but I
suspect that it is still looping as it is now inserting 6 rows between
each - any ideas why?

Thanks

Karen

Signature

ksp

Anita - 19 Jan 2006 07:17 GMT
Oops.  On inserting the row I was using -1 rows when I shouldn't have
been offsetting it at all.  Here's the Do Loop with a change to line 2.

Do
c.EntireRow.Insert
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address > firstaddress
ksp - 19 Jan 2006 07:19 GMT
Hi Anita

Thought you might like to know that I played around with the changes
you suggested (see below) and it now works perfectly - thanks heaps for
your input

Karen

Sub InsertRows()
With Range("A10:A2499")
On Error Resume Next
Set C = .Find(What:="*", LookIn:=xlValues)
If Not C Is Nothing Then
firstaddress = C.Offset(1, 0).Address
Do
C.Offset(0, 0).EntireRow.Insert
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> firstaddress
End If

End With

End Sub

Signature

ksp

Anita - 20 Jan 2006 16:36 GMT
Thanks so much for letting me know that it worked out for you!

Anita
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.