Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

how to insert rows and copy cells in Excel VBA

Posted on 2011-02-22
6
Medium Priority
?
648 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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:
Tracy earned 1000 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
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
LVL 24

Assisted Solution

by:StephenJR
StephenJR earned 1000 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

Ask an Anonymous Question!

Don't feel intimidated by what you don't know. Ask your question anonymously. It's easy! Learn more and upgrade.

Question has a verified solution.

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

This article will guide you to convert a grid from a picture into Excel format using Microsoft OneNote and no other 3rd party application.
Excel can be a tricky bit of software to get your head around. Whilst you’ll be able to eventually get to grips with the basic understanding of how to get by, there are a few Excel tips that not everybody will even know about let alone know how to d…
The viewer will learn how to use the =DISCRINV command to create a discrete random variable, use this command to model a set of probabilities and outcomes in a Monte Carlo simulation, and learn how to find the standard deviation of a set of probabil…
The viewer will learn how to use a discrete random variable to simulate the return on an investment over a period of years, create a Monte Carlo simulation using the discrete random variable, and create a graph to represent the possible returns over…

609 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