Solved

how to insert rows and copy cells in Excel VBA

Posted on 2011-02-22
6
604 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
PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

 
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

Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

Question has a verified solution.

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

Deploying a Microsoft Access application in a Citrix environment is not difficult but takes a few steps. However, Citrix system people are often of little help, as they typically know next to nothing about Access. The script provided here will take …
This article will guide you to convert a grid from a picture into Excel format using Microsoft OneNote and no other 3rd party application.
This Micro Tutorial will demonstrate in Google Sheets how to use the HYPERLINK function to create live links inside your spreadsheet.
This Micro Tutorial will demonstrate in Microsoft Excel how to add style and sexy appeal to horizontal bar charts.

770 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