• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 952
  • Last Modified:

Excel VBA Selecting Range of Cells to bottom of Print Area Page

I am trying to create an invoice in Excel. I have a precreated template on a sheet. The macro cleans up the information from a report that is exported from another software. It always comes out formatted the same(column-wise). As it stands now, It creates the bottom section of the invoice, then selections the used range for the cells on the bottom half then puts borders around them. What I am unsure on how to do is select only the first page border each section, then move to the second page and paste the header of the invoice again on the second page, then border the sections of the data again. To start the macro, you run the Create Invoice macro. If you have any questions, please let me know.

Any help is much appreciated. I'm attaching the sheet with the VB code in it. Feel free to critique this also. :)
CustInv---Example---EE.xlsm
0
tekkieguru
Asked:
tekkieguru
  • 2
1 Solution
 
RyanProject Engineer, ElectricalCommented:
Well, I can answer half of your question.  To repeat you header, say rows 1:6, in page setup set the "repeat rows at top" to 1:6.  You may want to move the date down 1 row, or shrink the image and use rows 1:5.

As for putting a border around the data thats on 1 page, even if it breaks onto a 2nd page, I'm not sure.  (Rewording if someone else has trouble understanding what you were asking for).
0
 
RyanProject Engineer, ElectricalCommented:
Found the answer to the other half.  Conditional format.  Currently, I'm seeing 46 rows on a page, with 6rows as header (so 40 rows of actual data_. So you want a bottom border on every data thats a multiple of 40 + 6, =MOD(ROW()-6,40)=0

Same thing for the top border on the next line, =MOD(ROW()-5,40)=0
0
 
tekkieguruAuthor Commented:
That worked great for the repeating header. I actually looked  at that section, but wasnt quite sure how to set it up.

As far as the page break borders. I used the below code. Since it was just needed on the bottom of the invoice data section, i figured out how to find the page breaks.

Private Sub PageBreakBorders()
Dim pb As HPageBreak
For Each pb In ActiveSheet.HPageBreaks
    LastRow = pb.Location.Offset(-1, 0).Row
    Range("B" & LastRow, "H" & LastRow).Select
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
Next

End Sub
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now