Hi Everyone!

The following code works (not the best), but is inefficient, in my
opinion. It takes a few minutes to run, which is unacceptable. I am
looking for a re-think about how this can be done in order to make it
run faster.

The code looks at a table that is in order chronologically, but not
consecutive. This portion of the code goes through and inserts rows
and the appropriate index in that row.

For instance:

Before the code runs, the table looks like this:

Column:                S                      T    ....
                   ClientID                 Account
                   2401                       a
                   2402                       b
                   2410                       c
                   2415                       d
                     ....                       ...

After the code runs:

Column:                S                      T    ....
                   ClientID                 Account
                   2401                       a
                   2402                       b
                   2403
                   2404
                   2405
                   2406
                   2407
                   2408
                   2409
                   2410                       c
                   2411
                   2412
                   2413
                   2414
                   2415                       d
                   ....                         ....





THE CODE:


Sub fillInRows()

Application.ScreenUpdating = False

Windows("ConvertColumns2.xlsm").Activate
Sheets("Main").Select
Range("D2").Select
beginning = ActiveCell.Value
Range("E2").Select
ending = ActiveCell.Value

Sheets("Output").Select
Range("S2").Select
Dim Count As Integer
Count = beginning
Dim rowCount As Integer
rowCount = 1
Dim offs As Integer
offs = 1
upperLimit = ending

Total = Worksheets("Main").Range("E2").Value - Worksheets("Main").Range
("D2").Value
current = 0

'Check to see if the first cell is the beginning of the range...
If Range("S2") <> Worksheets("Main").Range("D2").Value Then
Range("S2").Select
Selection.EntireRow.Insert
ActiveCell.FormulaR1C1 = Worksheets("Main").Range("D2").Value
End If


'Check to see if the data is there...
If Range("S2") = "" Then 'If the first cell is empty, kill program
    MsgBox "The first cell is empty... please enter raw data and re-
run macro"
    End 'if it is the case that the first cell is empty, exit macro
    End If



'Since the data is there, insert rows where needed...
    If Range("S2") <> "" Then 'When the first cell is occupied, we are
ready to begin.
        Do While (offs + 100) <= upperLimit
            If ActiveCell.Offset(1).Value = (Count + offs) Then 'If
the next cell is one more than the previous cell, then..
                ActiveCell.Offset(1).Select 'go to the next cell in
the column
                offs = offs + 1 'increase the offset from the top

            Else 'if the numbers are not in order...
                ActiveCell.Offset(1).Select
                Selection.EntireRow.Insert
                ActiveCell.FormulaR1C1 = Worksheets("Main").Range
("D2").Value + offs 'put the appropriate number in the new row
                offs = offs + 1 'increase the offset value by 1
                'MsgBox offs 'print the offset number for verification
            End If


            current = current + 1
            numDone = current / Total
        With UserForm1
            .FrameProgress.Caption = Format(numDone, current & "/" &
ending)
            .LabelProgress.Width = 200 / ending
        End With
'       The DoEvents statement is responsible for the form updating
        DoEvents



        Loop
    End If
    Application.ScreenUpdating = True
End Sub

--~--~---------~--~----~------------~-------~--~----~
----------------------------------------------------------------------------------
Some important links for excel users:
1. Excel and VBA Tutorials(Video and Text), Free add-ins downloads at 
http://www.excelitems.com
2. Excel tutorials at http://www.excel-macros.blogspot.com
3. Learn VBA Macros at http://www.vbamacros.blogspot.com
4. Excel Tips and Tricks at http://exceldailytip.blogspot.com
 

To post to this group, send email to excel-macros@googlegroups.com
If you find any spam message in the group, please send an email to:
Ayush Jain  @ jainayus...@gmail.com or
Ashish Jain @ 26may.1...@gmail.com
<><><><><><><><><><><><><><><><><><><><><><>
HELP US GROW !!

We reach over 5,000 subscribers worldwide and receive many nice notes about the 
learning and support from the group. Our goal is to have 10,000 subscribers by 
the end of 2009. Let friends and co-workers know they can subscribe to group at 
http://groups.google.com/group/excel-macros/subscribe
-~----------~----~----~----~------~----~------~--~---

Reply via email to