Another thing you can try is creating a new sheet where no rows are inserted, but it's built up from the top down.
For this to work, there needs to be a change to the formula in K9 of the Mainsails sheet. Currently the formula has cell refs. that refer to the sheet they're on:
="[ADD]"&ROUND(SUM((Mainsails!I2*('Sail Pricing'!B25))+(Mainsails!I2*('Sail Pricing'!H25))),2)
these need to be removed:
="[ADD]"&ROUND(SUM((I2*('Sail Pricing'!B25))+(I2*('Sail Pricing'!H25))),2)
then the following macro should work properly. It creates a new sheet with a date/time stamp in the name.
Sub insertMain2()
Dim x
Application.ScreenUpdating = 0
Application.Calculation = xlCalculationManual
Set newsht = Sheets.Add
newsht.Name = "Mainsails " & Format(Now, "YYYY MMM D hh_mm")
Set oldsht = Sheets("MainSails")
With oldsht
LR = .Cells(.Rows.Count, 2).End(xlUp).Row
.Rows("1:4").Copy newsht.Rows("1:4")
newsht.Cells(3, 1).Resize(2, 50).Formula = oldsht.Cells(3, 1).Resize(2, 50).Formula
End With
With newsht
x = .Cells(3, 1).Resize(2, 50).FormulaR1C1
For i = 5 To LR
DestRw = (i - 5) * 3 + 5
oldsht.Range(oldsht.Cells(i, 1), oldsht.Cells(i, 50)).Copy .Cells(DestRw, 1)
.Cells(DestRw + 1, 1).Resize(2, 50).FormulaR1C1 = x
Next i
End With
Application.ScreenUpdating = 1
Application.Calculation = xlCalculationAutomatic
End Sub
See how you get on, but do check the formulae are all OK. Then you can delete the original and rename the new one.