I'm afraid that my VBA skills are minimum but I have been asked to create a sales order workbook that contains 4 worksheets, of which three are to contain order-lines. For each item sold, a sales person will enter a new row on sheet 1 and the same data is copied to sheets 2 and 3 but with additional data.
I'm using the below vba (taken from an existing workbook that we are using) to aid the creation of rows on sheet 1 (copies the formula format from a selected line and inserts a new a defined number of rows below) what I need is the vba to create the same number of new rows on sheets 2 and 3 as a new line on sheet 1 is created but using the format of existing rows on each sheet. The aim is to save a sales person from having to enter new rows on each sheet individually.
Is this possible via vba ?
and as always thank you in advance!
I'm using the below vba (taken from an existing workbook that we are using) to aid the creation of rows on sheet 1 (copies the formula format from a selected line and inserts a new a defined number of rows below) what I need is the vba to create the same number of new rows on sheets 2 and 3 as a new line on sheet 1 is created but using the format of existing rows on each sheet. The aim is to save a sales person from having to enter new rows on each sheet individually.
Is this possible via vba ?
and as always thank you in advance!
Code:
Sub InsertRowsAndFillFormulas_caller()
'-- this macro shows on Tools, Macro..., Macros (Alt+F8) dialog
Call InsertRowsAndFillFormulas
End Sub
Sub InsertRowsAndFillFormulas(Optional vRows As Long = 0)
ActiveSheet.Unprotect Password:="bunny"
Dim x As Long
ActiveCell.EntireRow.Select 'So you do not have to preselect entire row
If vRows = 0 Then
vRows = Application.InputBox(prompt:= _
"How many rows do you want to add?", Title:="Add Rows", _
Default:=1, Type:=1) 'Default for 1 row, type 1 is number
If vRows = False Then Exit Sub
End If
'if you just want to add cells and not entire rows
'then delete ".EntireRow" in the following line
'rev. 2001-01-17 Gary L. Brown, programming, Grouped sheets
Dim sht As Worksheet, shts() As String, i As Long
ReDim shts(1 To Worksheets.Application.ActiveWorkbook. _
Windows(1).SelectedSheets.Count)
i = 0
For Each sht In _
Application.ActiveWorkbook.Windows(1).SelectedSheets
Sheets(sht.Name).Select
i = i + 1
shts(i) = sht.Name
x = Sheets(sht.Name).UsedRange.Rows.Count 'lastcell fixup
Selection.Resize(rowsize:=2).Rows(2).EntireRow. _
Resize(rowsize:=vRows).Insert Shift:=xlDown
Selection.AutoFill Selection.Resize( _
rowsize:=vRows + 1), xlFillDefault
On Error Resume Next 'to handle no constants in range -- John McKee 2000/02/01
' to remove the non-formulas -- 1998/03/11 Bill Manville
Selection.Offset(1).Resize(vRows).EntireRow. _
SpecialCells(xlConstants).ClearContents
Next sht
Worksheets(shts).Select
ActiveSheet.Protect Password:="bunny"
End Sub