I'm doing all my invoicing through Excel and I create a new worksheet for each of my clients from an existing one that I just copy and move.
What I would love is if I could create a macro that would copy the text value from two cells (date and name) and name the worksheet with that information and then save the printable area to a pdf in it's own directory with the same name as the sheet.
I have a template worksheet that I would like to copy and name according to a list that I have. Currently there are 57 objects (lack of a better word) in the list.
This is what I have currently.
Sub CreateWorksheets() ' ' Macro1 Macro ' Macro recorded 7/8/2008 by amkgri '
' Dim ws As Worksheet Dim Y As Long Dim I As Long
Y = ActiveCell.FormulaR1C1 = "=+COUNTA('Sales Managers'!C[1])-2" For I = 2 To Y
Worksheets("Template").Copy Worksheets(Worksheets.Count) ws.Name = I Next I End Sub
But it is currently not doing anything. I borrowed some of the code from another thread that is how I got this "far"....
The reason -2 is that the first row is column labels and the last row is my Template.
So I am wanting to start with the second row and continue until one row from the end.
The list of names that I am wanting to use is basically the list of states.
I have a main worksheet with several hundred different categories. I need to separate them into individual worksheets. Instead of inserting a new worksheet and naming it manually, is there any way to automatically create and name each new worksheet with a cell reference from the main sheet - something to the affect of Name of WorksheetABC=WorksheetMain cell A4.
I have a workbook with worksheets that are named in various ways that I need a VBA macro to sort.
Some sheets have names that begin with numbers.
I am able to get the macro to sort them all alphabetically but those with numbers are always put at the start of the work book instead of within the alphabetical format I want to use
I may have sheet names like:
CAT 3CAT 1CAT 2CAT MONKEY DOG 4DOG 3DOG
This is how I want these sheets sorted:
CAT 1CAT 2CAT 3CAT DOG 3DOG 4DOG MONKEY
The sheet names are examples and not actual sheet names.
Below is my code so far
Code: For lCount = 1 To lShtLast For lCount2 = lCount To lShtLast And Not IsNumeric(Mid(UCase(Sheets(lCount).Name), 1, 1)) If UCase(Sheets(lCount2).Name) < UCase(Sheets(lCount).Name) Then
I have a workbook composed of many worksheets with varying names. Of the 40 or so worksheets, 25 of them contain data that I need to copy and consolidate into a master summary sheet within the same workbook. All of the sheets I need to grab data from have a worksheet name that ends in “(Data)”. All worksheets contain data that starts on the same row (row 8) but the number of rows of data will change daily. When I copy the data range on the individual sheets I do not want to copy the header row. I’ve tried various uses of the offset command with no luck to resize the selected range. I’ve also tried giving each range a named Dynamic Range and referring to this name in VBA code but that didn’t get me very far either. So the flow looks something like this:
1. Find all sheets with name ending in “(Data)” (i.e. “Project X (Data)”) 2.For each sheet found, find the data range and omit the first row of data. 3.Copy selected range. 4.Go to sheet “Master” and find the last row of data. Move down one row to the first empty row and paste copied range. 5.Go to next sheet and repeat.
on sheet 1 which is named front cover i want to type in cell C8 a number or a name and it will change sheet 2 tab to what i type i have 20 sheets to do i can get it working in b5 on same sheet but i need it to work from the front cover sheet
My workbook has a summary page and one page for every day of the month. I am making a template file, so I can duplicate it to use every month of the year.
Each week is separated by a worksheet titled "week 1", "week 2" , etc. This is used in the summary page so I can gather totals for a week.
What I want to be able to do is this:
On the first day of the new month, go to week one and type in the date. Then that sheet tab would equal the date, and each daily tab name thereafter would increment the appropriate amount (1day). Then on week 2, it would be equal to the tab value for Friday +3.
The problems I see are:
1. In week 1 the month can start on any on of the 5 worksheets I have set up to cover the week. So any first day coding I need may have to be repeated in the first 5 worksheets
Is this do-able? 2. Tab naming code I have found on this site is not working for dates. 9-15-08 typed into a1 will not translate into the tab, even tho it is a valid name. I am using code VoGII gave which follows: ...
We utilize a shared spreadsheet in our department named "Arrangement Requests". From time to time and seemingly very random the sheet renames itself. When this happens anyone adding information to it becomes unable to save since the original "no longer exists".
This causes problems because everything we do is in real time and expected to be viewed by all as soon as save has been indicated.
make the auto naming code displayed on the worksheet tab die after first entry into, so that regardless whether any values are changed in the worksheet--a minute, hour, day after-- the "namedate" stays the same.
Is there a way to name a new tab without knowing its name. For instance, when I create a new tab, it could be named "Sheet2" or "Sheet3", but there is sometimes no way to know. Is there a way to edit the name of that new tab without refering to it by name?
How do I name a Variable for a formula in VBA? Example: I want to name the results of Cells A1 + A2 = X. Then I want to add C1 + X = and make that results a variable less say Y
I have a very large formula and if I can name varaibles it would be much easier.
I want to use the range in this code that works fine in one work book from sheet to sheet...
But i need it to run across 2 workbooks that are both open at the same time... The data its bringing back will be in a seperate workbook.
Sub zzzz() Sheets("Sheet2").Select Range("A3:M16").ClearContents
c = 3 'Paste Range Return Test x = Worksheets("sheet1").Cells(Rows.Count, 1).End(xlUp).Row 'data source For a = 1 To x If Worksheets("sheet1").Cells(a, 3) = Worksheets("sheet2").Range("a1") Then For b = 1 To 20 Cells(c, b) = Worksheets("sheet1").Cells(a, b) Next b c = c + 1 End If Next a 'Range("C3:C15,F3:F15,I3:I15").Select 'Selection.Delete Shift:=xlToLeft Range("A1").Select End Sub
I would like to use VBA to name ranges. I need to name the Desc., Price, and ID# columns separately and want to use the Location and the headings of each column as the name range. Example - the column containing Duplex Outlet would be named ElectricDesc.
This is what I came up with, but need to figure out how to make "add name" a formula combining Location+Desc. I tried concatenate (B1,A2) but it did not work.
Is there a way to name a sheet in vba? I am creating new sheets in vba, and renaming these tabs, but is there a way to actually rename the sheet (so that in the properties window it says (Name) "Demand" AND Name "Demand" Instead of (Name) Sheet1, Name "Demand"?
Basically my code creates a load of checkboxes and I need to name them appropriately as they will be used in the next part of the code.
I haven't had a problem changing the caption properties etc but I need the name to be meaningful and unique - it works fine if I just want each checkbox to be called i.e. "CB1" etc but I want the name to be derived from a range within the worksheet.
Below is an extract from the the_row = 10 For Each Item In ActiveSheet.OLEObjects If Item.progID = "Forms.CheckBox.1" Then Item.Name = WorksheetFunction.Substitute(ActiveSheet.Range("C" & the_row).Value, " ", "_") If Item.progID = "Forms.CheckBox.1" Then Item.Object.Caption = "" If Item.progID = "Forms.CheckBox.1" Then Item.PrintObject = False the_row = the_row + 1 Next
Column C contains the name which is unique to each checkbox, I simply need to replace any spaces with "_" but when I am not defining a set text string the name of the checkbox does not change.
I'm in the process of writing some SQL in excel and normally when I want to specify a field name as another name say wx22 as Part Number i just use square brackets eg "select wx22 as [Part Number]"
how to name a chart? I've been accessing charts in my VBA scripts using chart names, e.g. "Chart 4". I've been determining the chart name by recording a macro and selecting the charts. But, is there a way to either:
1- change the name of a chart (as you would name a pivot table) 2- determine the name without having to select the chart in a recorded macro 3- reference multiple charts from the same worksheet without using their names
A userform listbox places names in a column in Sheet2, starting with cell E1 and subsequent transfers from the listbox (which is multiselect) going to F1, G1 etc. There will be between 6 and 15 names in each case.
A seperate textbox is used to assign a number to each multiselection, this number is added to "Div" and placed in row 22 of the column to which the multiselection is transfered.
The text in this cell is used for other things later but I also want to use it to Name the range to which it refers. This name is then immediately used to populate another listbox in the userform, and will be used repeatedly later on in the project.
Here is the relavant snip of code that I have been trying to get to work but I get 'object required' for the ActiveWorkbook.Names.Add.......... line. I did manage to get rid of that once (can't recall how!!) but then the ListBox2,RowSource gave an error.
Set DvNm = Sheet2.Range("IV1").End(xlToLeft).Offset(21, 0) Set Rngc = Sheet2.Range("IV1").End(xlToLeft) Set Rngp = Sheet2.Range("D65536").End(xlUp).Offset(1, 0)
I have a table. I have added a new column on the far right, and as I don't know how many columns my table has I simply use:
[Code]....
Now I want to assign a name to that column; but as I don't know the column position, or number, how do I do that???
Now I need to place some information in the cells in that column. If I know the position of the cell we just placed the header name in, I know I can use offset to accomplish this, but:
How would I know the location of that cell other than running a "Find" on the entire header row.