Muchas gracias, me ha servido de mucho. Lo que pasa es que si pongo 7 y luego pongo 3, en total me añade 10 y no solo 3 que es lo que quería. El programa que me has pasado no resta por así decirlo. Dándole vueltas he agregado unas líneas y añadido que a demás de crear o quitar filas, éstas salgan con las celdas surbarrayadas. Adjunto código para si alguien tiene la misma duda en un futuro:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B29")) Is Nothing Then
fila = 33
numero = Range("b29").Value
numeroanterior = Range("C29").Value
Rows(fila & ":" & fila + numeroanterior - 1).Delete
Rows(fila & ":" & fila + numero - 1).Insert
Range("C29").Value = numero
j = 1
For i = fila To fila + numero - 1
Cells(i, 1) = j
Rows(i).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlContinuous
Selection.Borders(xlEdgeTop).LineStyle = xlContinuous
Selection.Borders(xlEdgeBottom).LineStyle = xlContinuous
Selection.Borders(xlEdgeRight).LineStyle = xlContinuous
Selection.Borders(xlInsideVertical).LineStyle = xlContinuous
Selection.Borders(xlInsideHorizontal).LineStyle = xlContinuous
j = j + 1
Next i
End If
End Sub