VBA To Look At Tha Last Cell That Is Populated In Column And Set Print Area
Mar 8, 2007
I have a template worksheet that several people use and print from.
The range on this worksheet used is A1:C499
I want the VBA to look at tha last cell that is populated in column A and set the print area to suit.
i.e. the last cell used in column A could be A277. then I'd want the print area to be A1:C277.
Using Excel 2003 I am trying to write a macro to set the print area according to the amount of data in a particular range of cells. I find I can include this instruction
I need to use macro to find the last column index number within the print area. My cell sizes change depending on the data entered so the last column in the print area changes. The code I want to implement involves putting a title at the top of the page and creating a border that spans the width of the page. This is what I have so far:
LastColumn = Cells.SpecialCells(xlLastCell).Column ' replace this with last column in print area
Rows("2:2").Select Selection.Insert Shift:=xlDown Range(Cells(1, 1), Cells(2, LastColumn)).Select With Selection .MergeCells = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter End With
With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With
I want to select a range in a spreadsheet and then set it as the print area. the last column I want to be selected is contains the text data "ABC" in row 1 and is the only column with data "ABC" in row 1. The last row I want to select contains the text data "DEF" in column 1 and is the only row in column 1 containing the data "DEF". Basically I want to select the range [A1:column("ABC")row("DEF")] and then set it as the print area.
I have a code Ive been trying to get to work. It works fine with selecting the print area based off a cell value, it just wont update when ever the value changes.
This is on the Sheet's code
Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Target Range("A1") Then Exit Sub Call PrintbyName End Sub
And this is in a module
Sub PrintbyName() Dim rng1 As Range, rng2 As Range, rng3 As Range, rngPrint As Range 'Refer to the named ranges With Worksheets("Permit Page") Set rng1 = Range("$A$1:$bx$603") Set rng2 = Range("$A$1:$bx$493") Set rng3 = Range("$A$1:$bx$493,$a$549:$bx$603")
[code]......
I wasnt sure if I was suppose to fill out where it says "nothing".
How can I print 2 selected area (highlighted area). I know there is a trick to do that. Right now I can only select (highlight) one area to print, but would like to know how to print 2 or more areas at same time
I am trying to set the print area based on cell values, but I keep getting errors when running the macro. It fails where I have highlighted, but rc.Value shows as the proper number.
I'm looking for a way to set the print area based on the value of a cell. I have a worksheet that prints a 12-page document, with data pulled from separate sheets. At the bottom of these twelve pages is an additional 2-page section that I only need in certain instances.
For example, if a cell (let's call it A1) on Sheet1 says "brown," I need the print area set to include these additional pages. If that same cell ('Sheet1'!A1) reads "yellow," however, I don't need to include the 2 pages in the print area.
I just converted from Excel 2003 to 2007 and print previewed a worksheet and find a tiny image with a small portion of the print area. When I look at the sheet in page break preview mode, I see the 8.5 x 11 sheet broken up into approx 77 smaller sheets. When I try to move the page breaks to include the whole sheet it states the change cannot be made as it will result in an image less than 10%. I have attached two images - the first shows the print preview I get, and the second show the multiple pages when I view in page break.
I have a calculator and I am trying to set a macro that will take the cells highlighted copy them to another sheet, change the format to standard( no background color) make the data fit in one page and print it.
this is what I got so far:
Sub Set_Print() ' ' Set_Print Macro ' set printing area and print
with creating vb code that will select certain rows in a spreadsheet, set the print area to those rows and print them out, and then reset the print area back to default. The data is all on one sheet, but is split into 5 different areas, each below the next, with the column headers at the top of each. e.g.
and so on. At the press of a button it'll set the print area to the first section and print (the section includes the headers as well as the data). Then at the press of another button it'll set the print area to the next section. There could be any amount of rows of data in each section so it needs to cope with that.
I have a sheet that already has page breaks set at specific intervals to ensure the data is displayed in a certain way on print, I can only have whole pages. The variable is how many pages are printed on each project, which can be anything between 1 and 20 or more. I have a few columns that contain line numbers, and formulae down the entire length of the sheet, so a basic last populated cell search won't work, but the column I'd like to focus on is Col F, which only has blank/empty cells below the last used one in use. Is it possible to have a BeforePrint code find the last populated cell in Col F and simply capture which print page number it is in, and set that as the number of pages to print?
So in summary, I'd like to be able to just hit Print, and the code will automatically set the number of pages to print based on which page contains the last populated cell in Col F.
I'm trying to print populated rows from 5 different worksheets. I can get them to print out onto 5 different sheets of A4 but would ideally like them to print underneath each other (continous and use less paper) as some times one sheet may only have one populated row.
Application. ScreenUpdating = False Dim printer1 As Range Dim printer2 As Range Dim printer3 As Range Dim printer4 As Range Dim printer5 As Range
Sheets("xxxx").Select Set printer1 = ActiveSheet.Range("a9", Range("i65536").End(xlUp))
Sheets("xxxx").Select Set printer2 = ActiveSheet.Range("a7", Range("i65536").End(xlUp))
I have attached a sample file. I would if possible like to have a hyperlink at the top of the sheet that when pressed would take you to the last populated cell in column G. I can do a normal hyperlinks but over time the hyperlink would take you to the wrong place as the sheet is filled in more and more. Is this possible?
I have tried to adapt various macros I have found on this forum but they on't seem to do want I ask of them I also seemed to have acquired an extra vba project (Ubitmenuo4) in the worksheet and can't get rid of it, so just ignore that
I have a column array with various cells in that array populated. In every subsequent cell in that array I want a formula that finds the previously populated cell and that value added a cell that is in the same row but two columns to the left.
Basically i have a manpower chart with months along the top and names down the far left. People are going to start work in different months so i want to know at the side of each persons name the month they start. Heres a simple example
I have column headers starting at B1 thru F1, with the following values Month1,Month2,Month3,Month4,Month5 In cell D2 i have the value 1 I want Cell A2 to return the value Month3
I have 3 columns (data, date & price). What I would like to do is find the last populated cell in 'date' column and autofill it based on column 'data'. The tricky thing is that the date form is text and while autofilling manually it changes.
i have a manpower chart with months along the top and names down the far left. People are going to start work in different months so i want to know at the side of each persons name the month they start. Does that make sense? Heres a simple example
I have column headers starting at B1 thru F1, with the following values Month1,Month2,Month3,Month4,Month5 In cell D2 i have the value 1 I want Cell A2 to return the value Month3
I have attached a sheet as an example, as i am trying to Divide a cell by the number of populated cells in that column e.g column (A) has a table of 16 but only has 13 populated cells in that column, the sum would be something like this =sum(A18/13. Sometimes the column will have less and at times more populated.
get a cell to return a value depending on whether or not a cloumn is populated for example. If i Have 3 columns EUR, GBP and CHF and there can (99% of the time) only be one entry in any of the 3 on any given row. How then can i get a 4th column to return the value EUR, GBP or CHF on the same row as an entry. I have a relatively complicate nested IF fromula but i think this is slowing down the worksheet as there are 500 or so rows containing it. Ive attached an example segment
I have a sheet that will be about 5 pages long if printed. To minimize wasted ink and paper, using VB I would like to be able to have it only print the portion uses (data entered) along with a section at the top and bottom. The section at the top would print on the top of the first page and the section at the bottom would print on the last page.
I know I could record a macro to select an area and print that but it would not do what I am trying to accomplish.
I use the code below to print a portion of a sheet. My problem is that the area always changes. The $A$476 should be the first cell in that column that contains "HEA" The "536" in $F$536 is the last row that contains data. There are conditional formats all the way down to row 1,000 but not data
Private Sub CommandButton1_Click() Dim strCurrentPrinter As String, strNetworkPrinter As String ****strNetworkPrinter = GetFullNetworkPrinterName("Adobe PDF") ****If Len(strNetworkPrinter) > 0 Then ' found the network printer ********strCurrentPrinter = Application.ActivePrinter ********' change to the network printer ********Application.ActivePrinter = strNetworkPrinter ********ActiveSheet.PageSetup.PrintArea = "$A$476:$F$536" ********ActiveSheet.PrintOut** 'print something ********' change back to the previously active printer ********Application.ActivePrinter = strCurrentPrinter ********ActiveSheet.PageSetup.PrintArea = "" ****End If End Sub
Obviously there is a function also that finds the full network printer name, I didn't think it was important, because my issue is the print area. Everything else works fine. If you need it let me know and I will post it.
Looking for a macro that will set the print area on an accounts spreadsheet to the last non blank row, bearing in mind that all the rows contain formulas, have tried some macros but they assume the cells with formulas in them are non blank
copying a document that was made in word into Excel. I set the print area and page size but it seems I can keep adding columns. When I check the print preview it still shows the one page but it appears wider.Will it automatically create a new page if the page size limit is reached?