Wie eine neue Zeile einfügen in eine Auswahl und kopieren von Formeln
Ich habe einen benannten Bereich, wie die folgende Abdeckung A2:D3
ITEM PRICE QTY SUBTOTAL
1 10 3 30
1 5 2 10
TOTAL: 40
Ich bin eine neue Zeile eingefügt mit VBA in den Bereich kopieren, werden die Formeln nicht Werten.
Irgendwelche Tipps/links sehr dankbar.
- Kopie aus wo
- Es ist egal, in welche Zeile, die Sie kopieren aus? Ich nehme an, wenn wir die Zeile einzufügen unmittelbar vor der total-und verwenden Sie die Formeln aus der Zeile darüber, dass für Sie arbeiten würde?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies sollte es tun:
target.Rows(rowNr + 1).Insert
: 1) nicht verlängern, der Benannte Bereich durch eine Zeile (AFAIK die einzige Art und Weise zu tun, so dass implizit mit Zeile Einfügen (vs. explizit ändern Range-definition) und so zu tun nachdem, die Zeile # ist über der Zeile #'s 1 bis Count - 1) und 2) nur die Verschiebungen von Spalten in dertarget
Bereich nach unten durch eine Zeile. In vielen (wahrscheinlich den meisten) Fällen, Spalten rechts und/oder Links von dertarget
Bereich müssen verschoben werden, unten auch. 3)target.Rows(rowNr).Copy target.Rows(rowNr + 1)
kopiert nicht die Formate, die oft, wenn nicht meist gewünschten auch. Siehe meine Alternative Antwort unten.Wenn Sie die Aufnahme starten ein makro und eigentlich die Aufgabe in der hand, es wird den code für Sie generieren. Sobald Sie fertig sind, beenden Sie die Makroaufzeichnung und Sie haben den code erforderlich, die Sie dann ändern können.
Diese sollten dir helfen: http://www.mvps.org/dmcritchie/excel/insrtrow.htm
Musste ich roll eine Lösung, die funktionierte wie die Möglichkeit einer Datenverbindung Abfrage wird eine Ergebnis-Bereich mit wahlweise autofilling Formeln nach rechts ab. Vielleicht zwei Jahre zu spät für die Prämie, aber ich bin glücklich zu teilen, eh!
Diese Antwort behebt die folgenden 3 Probleme bei der derzeit Akzeptierte Antwort von @marg Zitat Apr 13 '10 um 9:43.
target.Rows(rowNr + 1).Insert
: 1.1. verlängert nicht die Benannten Bereich, durch die eine Reihe (AFAIK die einzige Art und Weise zu tun, so dass implizit mit Zeile Einfügen (vs. explizit ändern Range-definition) und so zu tun nach angegebene Zeile # ist über der Zeile #'s 1 bis Count - 1) und 1.2) nur die Verschiebungen von Spalten in dertarget
Bereich nach unten durch eine Zeile. In vielen (wahrscheinlich den meisten) Fällen, Spalten rechts und/oder Links von dertarget
Bereich müssen verschoben werden, unten auch.target.Rows(rowNr).Copy target.Rows(rowNr + 1)
nicht kopierendie Formate, die oft, wenn nicht meist gewünschten auch.
Private Sub InsertNewRowInRange( _
TargetRange As Range, _
Optional InsertAfterRowNumber As Integer = -1, _
Optional InsertEntireSheetRow As Boolean = True)
TargetRange.Rows(InsertAfterRowNumber + 1).Insert
. Er arbeitete für einige Tage und dann plötzlich begann ich immer diese Fehlermeldung.Hier ist eine andere Lösung, die aufbauend auf die Antwort von @Tom. Es verwendet nicht die "Auswahl", und es ist möglich, mehrere Zeilen einfügen.