Solved

how to insert rows and copy cells in Excel VBA

Posted on 2011-02-22
6
613 Views
Last Modified: 2012-05-11
Using VBA code, I need to go through a range of cells in column P, and where column P contains data, I need to check the quantity on that row (col H). If the quantity on that row is greater than 1.......

Here's the part I don't know how to do:.....

If the quantity on that row is greater than 1, Insert (quantity minus one) rows BELOW that row, AND copy down the data in cells I & J, AND make those cells in column Q yellow interior.

For example, if the code discovers that cell P20 has data and cell H20 = 4, then insert new rows 21, 22, and 23. Copy I20:J20 down to I23:J23. Make Q20:Q23 yellow interior. Then, the next cell in the range and repeat.

Thanks!
0
Comment
Question by:nbozzy
  • 3
  • 2
6 Comments
 
LVL 24

Expert Comment

by:StephenJR
ID: 34953176
Could you post a sample workbook please?
0
 

Author Comment

by:nbozzy
ID: 34953278
EE-sample.xls
Attached. Thanks!
0
 
LVL 24

Accepted Solution

by:
broomee9 earned 250 total points
ID: 34953434
Try this:
Option Explicit

Sub CheckQuantities()

    Dim i As Long
    Dim lastRow As Long
    Dim rowsToInsert As Integer
    Dim startRow As Long
    Dim endRow As Long
    
    lastRow = Range("P" & Rows.Count).End(xlUp).Row
    
    For i = 5 To lastRow
        Debug.Print i & " - " & lastRow
        If Cells(i, "P").Value <> "" Then
            If Cells(i, "H").Value <> 1 Then
                rowsToInsert = Cells(i, "H").Value - 1
                startRow = i
                endRow = startRow + rowsToInsert
                
                'Insert rows
                Rows(startRow + 1 & ":" & endRow).Insert Shift:=xlDown
                
                'Copy Data
                Range("I" & startRow & ":J" & startRow).Copy
                Range("I" & startRow & ":J" & endRow).PasteSpecial xlPasteAll
                
                'Highlight Column Q
                Range("Q" & startRow & ":Q" & endRow).Interior.ColorIndex = 6
                Range("Q" & startRow & ":Q" & endRow).Interior.Pattern = xlSolid
                
                'Reset i counter
                i = endRow
                lastRow = lastRow + rowsToInsert
            Else
            End If
        Else
        End If
    Next

End Sub

Open in new window

EE-sample.xls
0
Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

 
LVL 24

Assisted Solution

by:StephenJR
StephenJR earned 250 total points
ID: 34953452
If the qty is 1 do you still want yellow?
Sub x()

Dim r As Long

For r = Cells(Rows.Count, "G").End(xlUp).Row To 5 Step -1
    If Len(Cells(r, "P")) > 0 Then
        If Cells(r, "H") > 1 Then
            Cells(r + 1, "H").Resize(Cells(r, "H") - 1).EntireRow.Insert shift:=xlDown
            Cells(r + 1, "I").Resize(Cells(r, "H") - 1, 2).Value = Cells(r, "I").Resize(, 2).Value
            Cells(r, "Q").Resize(Cells(r, "H")).Interior.Color = vbYellow
        End If
    End If
Next r

End Sub

Open in new window

0
 

Author Comment

by:nbozzy
ID: 34953743
Thank you both! Both solutions worked, so I will split points.
StephenJR: yes, I do want yellow only if quantity is 1, but I can modify the code to accommodate that. ;)
Broomee9: your code did leave the copy "marquis" visible along with cells selected, but I know how to fix those things.

I appreciate the help and the new knowledge!
0
 

Author Closing Comment

by:nbozzy
ID: 34953750
I didn't choose a "Best Solution" because that depends upon the particular user. Thanks!
0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

A little background as to how I came to I design this code: Around 5 years ago I designed an add-in that formatted Excel files to a corporate standard, applying different cell colours and font type depending on whether the cells contained inputs,…
Introduction This Article briefly covers methods of calculating the NPV and IRR variants in Excel as well as the limitations in calculating and interpreting IRR results. Paraphrasing Richard Shockley, author of my favourite finance reference tex…
This Micro Tutorial will demonstrate on a Mac how to change the sort order for chart legend values and decrpyt the intimidating chart menu.
Many functions in Excel can make decisions. The most simple of these is the IF function: it returns a value depending on whether a condition you describe is true or false. Once you get the hang of using the IF function, you will find it easier to us…

766 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question