Rename Tab Based On Cell Value And Increment Invoice Number
May 2, 2012
What I'm trying to do is from a template worksheet that I have in a workbook with other worksheets, I'm trying to come up with code that will create a new worksheet based on the template (copy), increment the invoice number, and rename the worksheet tab to be "Invoice # xxxx" (new invoice number from prev. step.).
I have figured out how to use a button on the template to execute, but as I said my VBA skills are lacking to say the least.
I have an Excel Invoice Template, saved as a template.
I have code that generates a new invoice number each time the template is opened in VBA Editor. The auto numbering system works great! However.... (here comes the sad part)
After I enter all the data I need on the invoice, I want to save a copy of the invoice in a different file folder, which I can no problem. The problem is, if I re-open the saved invoice, we will call it Invoice #100, excel asks me if I want to update, if I say either yes or no, the invoice number will change to Invoice #101. I'm sure you can see how this can cause a major problem if we need to compare information later on, finding the correct invoice would be almost impossible as it would not match the customers invoice number.
What I need to know is:
Is there code I can add to the existing code, to stop the increment on a saved invoice, but not on the original template?
Our business has a spreadsheet set up for invoicing. A Macro has been created to increase the invoice number, save to the desktop as a PDF with a file name taken from the cells
This is working on my colleagues mac but when we've loaded onto my computer it errors, when I debug I am getting the following error:
I have a spreadsheet with 2100 rows. I am trying to fill one column with a numbering system that fills the same number in for 21 cells and then increases by one. For example:
I am trying to get my invoice sheet to automatically increment the invoice number when I open the workbook. I know it is in the code i.e. private sub? but it doesnt seem to work.
In my excel workbook, I have a customer table and invoice sheet among many others.
As part of my system, there is functionality to grant new customers with a discount on the first purchase. Within my customer table, the last two columns are "Number of Purchases" and "Customer Type" (either single/multiple depending on no. of purchases), which are then used to determine whether the discount is valid or not on the invoice.
Once an invoice has been created, archived and refreshed with the customer selected (via a Customer ID), I would like some code to auto increment the number of purchases on the Customer table for that specific customer to +1.
For example, customer called Bob (Bob-1); Number of purchases = 1 Customer Type = Single Discount = Yes
Invoice then created for Bob (using Bob-1 as the unique value), sent off and refreshed. New figures should be:
Number of purchases = 2 Customer Type = Multiple (can be achieved by using IF statement on No. of purchases) Discount = No
We need to reach a cell value by using increment of another cell value. But ideally the results will all be in one cell.
Now to make it a little more advance there could be an overhang of the board in A3 which would need to be deducted from the first increment.
Example :
A1 = 5193mm (Lenght of beam) A2 = 600mm (Width of board) A3 = 200 (Overhang) A4 = 400 - 1200 - 1800 - 2200 - 2800 - 3400 - 4000 - 4600 (End Result, The formula wont do the next sum as it exceeds A1)
Of course the vaules of A1 and A2 will vary but that shouldnt make any difference to the formula.
I am looking for a macro to rename tabs based on information in A1 on each tab. The thing that is causing me issues is the cell A1 has a formula in it and it changes on a daily basis with days of the week but the tab only updates when i double click A1 and press enter.
Is it possible to write a macro that will rename a worksheet based on the value of the cell?
For instance, if cell a1 has the value Test, the worksheet should be named Test. If I change the value of the cell to say Test 1, the worksheet should automatically rename itself to Test 1.
I'm quite a novice at Excel. I have a column of values that I sum as follows;
A 0 0 0 0 0
0 <----------------sum of A1:A5
A formula may change one of the values in the above column to a '1' which means the sum will become '1'. The sum can only be '1' or '0' and only one value in the column will ever change. I need to add a value of 2 to another cell (say, C1) when the sum of A1:A5 changes from a value of '0' to '1'. I know this will probably involve the worksheet change event but am having a problem implementing it.
I receive a workbook each day with approx 500 tabs of call data and I would like to relabel all the tabs with the user names. The user names are in a merged range "A7:M7". I'm having difficulty getting the following script to rename the sheets. Currently the values in "A7:M7" look like "User: ADAM ENGEMANN-558".
I am trying to delete each occurrence of "User: " while naming the sheets as well as removing the merged range before doing so that the names are in A7 only. The sheet names should look like "ADAM ENGEMANN-558", or, ideally just "ADAM ENGEMANN". For some reason my code will not modify the cells. (See attached example)
This works if I manually unmerge the cells before running and remove the ":".
VB: Sub RenameSheets2() Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets If ws.Range("A7").Value <> "" Then
[Code] .....
This his how I modified it but it doesn't work on the supplied sheets. Please note that if I manually insert some blank sheets into my workbook and merge the cells etc it does work. There seems to be something odd going on with the sheets they are giving me. (they aren't protected)
VB: Sub RenameSheets2() Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets If ws.Range("A7").Value <> "" Then
I tried adding the following to remove the merged ranges and remove 'User: ' from the names Range("A7:M7").Select With Selection .WrapText = False .MergeCells = False
I am having trouble creating a macro that renames all excel sheets using cells on Sheet1.
See attached, I want to rename all excel sheets (renamed as "1", "2", "3"....."50") as "9999", "10000", "10001"..."10045", found in Sheet1, renamed as "Base". I will change the cell values everyday (range Base!A5 to Base!50) - and will rename all the sheets again.
I am building a workbook. The data we are tracking is all in one xml file, which i have mapped to 3 different worksheets(customers, invoices, inventory). On the customers and inventory sheet I have an interface for creating a new customer/product/invoice. I used the macro recorder to make the macro's to do these three things, but could use help on a couple of other functions as I don't actually know VBA. I need to be able to automate editing of existing records by having a button to press on the each sheet that will open an input box that asks the user which invoice number, customer number or product number he would like to edit, then copy that record to the interface for editing, then another macro to replace the existing data with the newly edited data. It would also be wonderful if when creating or editing an invoice it could create a copy of the interface worksheet and rename it as the invoice number. The first row of each datasheet is blank, and each of the interfaces have formula's for importing the information copied to row 1 from the data tables. the second row of each datasheet contains formulas for importing data from the interface. Any help would be terrific...I know you guys are excel gods and I will forever be in your debt if you can help me out....thanks in advance, I'll be studying my butt off until I figure this out
I have a master sheet where users can change the name of 20 different sheets in the workbook by changing a cell value on the master sheet. Here is the code:
Code: Private Sub Worksheet_Change(ByVal Target As Range) Dim rCell As Range If Target.Cells.Count > 1 Then Exit Sub
[Code]....
The next step which I am having issues with is hiding the sheets. I want all sheets in the workbook to be hidden except for the master. I only want the other sheets to be visble if the user inputs a name on the master sheet.
So if the cell contents on the master sheet, say "B9", is blank, the sheet in the workbook that corresponds to that cell will remain hidden. If the user inputs anything, say "Sheet1", in cell "B9" on the master sheet, I want that sheet to become unhidden and to be named "Sheet1"
Can a macro rename Excel files based on a cell's contents? The problem maybe that I download these files en masse from a website and they all have 54-character long randomly generated filenames which I can rename by selecting all and then use the rename function to get a series of filenames like a, a(2), a(3), ... but I would rather have the files renamed based on the text that exists in cell B1 which is the title of the report. I also read somewhere that this kind of macro only works if the tabs have names like "Sheet 1"
I'm Trying to create a invoice that generates the invoice number automatically every time its being opened Now, how to do it with a macro but the problem is i need the invoice to be saved as a template. In the end i need the invoice template to move the invoice number to the next one when opened and when im done with the invoice i need a print button that saves the invoice with contents to a specific folder, clears the contents and saves the invoice with the current invoice number as a template so that next time its being opened it can just adjust the counter.I have done the counter adjustment part .
Leith got this perfect for me, but my example does not work right. Not sure why it does not save last invoice number too the workbook. The invoice number increase works great, I must be missing a step.
I have a requirement where I want my list should auto increment with number only.
For example: I want to fill below text in cell and when I drag the cell( Along the column A) and fill the rows downward it should automaticallly incremented.
Data in one cell say (A1) is like 001_TCO_CM, now I want to drag data present in cell A1 and wants data in cell A2, A3, A4 etc... it should get increment like
A2 = 002_TCO_CM
A3 = 003_TCO_CM
A4 = 004_TCO_CM
and so on...any method or way present in Excel 2003 so that my series should get auto filled.
I've created an Invoice Template in excel. Each time I open it I'd like a certian cell "D3" to increase by one number starting at 2000. Each time this is opened a new customer information is input and then saved to their file. Please give me the very basicis on how to do this. I've already gone into other forums which have provided a code, but I have had any luck getting ti too work.
I use a userform to make sales data entries into a database. The userform contains textboxes for:
Invoice No.Invoice DateGrossVatNet The Invoice No. is the first entry box on the userform and it is important that users enter the correct format (which is alphanumeric).
It is also important that a checking is carried out to ensure that the Invoice Number being entered has not already been used.
I use the following code to ensure that the numbers are entered in the desired format:
Code: Private Sub txtInv_Exit(ByVal Cancel As MSForms.ReturnBoolean) If txtInv.Value = vbNullString Then Exit Sub If (Not UCase(Me.txtInv.Value) Like "ST###") And (Not UCase(Me.txtInv.Value) Like "ST####") Then MsgBox "Non Valid Invoice Number.” Cancel = True End If End Sub
And this code is pasted lower down the VB editor window. And it seems to be working fine!
For the checking to ensure that the invoice number being typed into the textbox has not already been used, I use the following two codes combined together:
a) to check for invoice No.:
Code: check for Invoice Number
If Trim(Me.txtInv.Value) = "" Then Me.txtInv.SetFocus MsgBox "Please Enter Invoice No." Exit Sub End If
b) And to it I add the following additional code for CHECKING that the no. does not already exist in the database (the invoice nos are located in Column A of the database):
Code: Dim x X= Application.Match(Me.txtInv.Value, Columns(1),0) If Not IsError(x) Then MsgBox Me.txtInv.Value & "Invoice Number Is Already Used" Me.txtInv.SetFocus Cancel = True Exit Sub End If
My problem with the second set of codes in (a) & (b) (for the Checking of already existing No.) is that the code allows the user to key in the Invoice No. and go through filling in the other textboxes. It is only after clicking the ‘Add’ button that a msgbox comes up to indicate that the ‘invoice no. is already used’.
I need a tweaking of the codes so that the moment an invoice no. that has already been used is typed into the textbox and the TAB button pressed, a msgbox will show up at that stage to indicate that the ‘Invoice no. is already used’. This will reduce time and avoid filling in the other textboxes and clicking the ‘Add’ button before the checking is done.
I created an receipt template in excel. How can I have it increase the receipt invoice number by 1 every time I open this template? For example the first receipt is 100, I want the second receipt to be 101, and so on.
I've created an Invoice Template in excel. Each time I open it I'd like a certian cell "D3" to increase by one number starting at 2000. Each time this is opened a new customer information is input and then saved to their file. Please give me the very basicis on how to do this. I've already gone into other forums which have provided a code, but I have had any luck getting ti too work.