Questa risposta risolve i seguenti 3 problemi con la risposta attualmente accettata da @marg pubblicata in origine 13 aprile 10 alle 9:43.
target.Rows(rowNr + 1).Insert
: 1.1. non estende l'intervallo denominato di una riga (AFAIK l'unico modo per farlo in modo implicito tramite Insert Row (rispetto alla modifica della definizione di intervallo) e per farlo dopo specificato Row # è tramite il numero riga 1 per Count - 1) e 1.2) sposta solo colonne nella scala target
di una riga. In molti casi (e probabilmente la maggior parte), le colonne a destra e/o sinistra dell'intervallo target
devono essere anch'esse spostate verso il basso.
target.Rows(rowNr).Copy target.Rows(rowNr + 1)
non copia i Formati che sono spesso, se non di solito, anche desiderati.
Private Sub InsertNewRowInRange (_ TargetRange come gamma, _ opzionale InsertAfterRowNumber As Integer = -1, _ opzionale InsertEntireSheetRow come booleano = True)
' -- InsertAfterRowNumber must be 1 to TargetRange.Rows.Count - 1 for TargetRange to be extended by one Row and for there to be
' -- Formats and Formulas to copy from (e.g. can't be 0). Default: If -1, defaults to TargetRange.Rows.Count.
' -- Recommend dummy spacer Row at the bottom of TargetRange which, btw, would also be necessary to manually extend a Range
' -- by one Row implicitly via Insert Row (vs. explicilty via changing Range definition).
If InsertAfterRowNumber = -1 Then
InsertAfterRowNumber = TargetRange.Rows.Count
End If
If InsertEntireSheetRow Then
TargetRange.Cells(InsertAfterRowNumber + 1, 1).Select
Selection.EntireRow.Insert
Else
TargetRange.Rows(InsertAfterRowNumber + 1).Insert
End If
TargetRange.Rows(InsertAfterRowNumber).Select
Selection.Copy
TargetRange.Rows(InsertAfterRowNumber + 1).Select
Selection.PasteSpecial _
Paste:=xlPasteFormats, _
Operation:=xlNone, _
SkipBlanks:=False, _
Transpose:=False
Selection.PasteSpecial _
Paste:=xlPasteFormulas, _
Operation:=xlNone, _
SkipBlanks:=False, _
Transpose:=False
Application.CutCopyMode = False
End Sub
copia da dove –
Importa la riga da cui si copia? Presumo che se inseriamo la riga immediatamente prima del totale e usiamo le formule dalla riga precedente, ciò funzionerebbe per te? –