habe eine größere Menge Daten einzugeben und habe folgendes Problem: Tabelle mit Spalten A:Z Aufgabe: Nach Eingabe in Spalte I soll eine neue Zeile erzeugt werden mit den Formatierungen und Formel der Zeile darüber. So habe Ich habe nachstehendes Makro begonnen: Private Sub Worksheet_Change(ByVal Target As Range) Dim KeyCells As Range ' The variable KeyCells contains the cells that will ' cause an alert when they are changed. Set KeyCells = Range("I1:I350")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _ Is Nothing Then
Kann mir jemand das Makro vervollständigen. Danke schon mal im Voraus!
warum willst du das unbedingt mit einem Makro lösen? Das geht doch problemlos mit Bordmitteln. Du musst nur deine Datensatzliste als Tabelle (Strg&L) formatieren, den Rest erledigt Excel selber.
Gruß Günter Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. angebl. von Georg Christoph Lichtenberg (1742-1799)
Hallo Günter, ich sende Dir mal meine bisherige Datei. Die Gliederung ist angepasst, dass ich relativ leicht mit den mir vorgebenen Vorlagen abstimmen und auswerten kann.
Leider sind meine Excelkenntnisse beschränkt und so behelfe ich mir oft mit Notlösungen. Vielleicht kannst Du mir noch ein paar Tips geben.
also, dass man es richtig versteht - Du hast einen Bereich von I1 bis I350 und wenn Du in dem Bereich irgendwo etwas eingibst soll eine Zeile darunter eingefügt werden mit den Formeln und Formatierungen der Zeile über der Eingabezeile oder aus der Eingabezeile.. ? Bei Eingabe in Zeile 1 wäre es allerdings schlecht möglich, die Formeln und Formatierung aus der Zeile darüber zu kopieren
Im Prinzip könnte das so gehen:
Code:
Private Sub Worksheet_Change(ByVal Target As Range) 'Wenn die Spalte = 9 (I) ist und nur eine Zelle gewählt, dann If Target.Column = 9 And Target.Rows.Count = 1 Then 'Zeile darunter einfuegen Rows(Target.Row + 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 'Zeile kopieren Rows(Target.Row).Copy 'Formeln einfuegen Rows(Target.Row + 1).PasteSpecial Paste:=xlPasteFormulas 'Formate einfuegen Rows(Target.Row + 1).PasteSpecial Paste:=xlPasteFormats 'Kopiermarkierung aus Application.CutCopyMode = False 'Zelle wieder auswaehlen Target.Select End If End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Hallo Andr'e, vielen Dank für die Hilfe. Makro funktioniert wie gewünscht. Dass auch Werte aus der zu kopierenden Zeile übernommen werden, ist kein Problem. Schön, dass Du die einzelnen Schritte kommentiert hast, was das Verständnis sehr erleichtert - Kompliment. Noch eine Frage: gibt es eine Möglichkeit, zu verhindern, dass das Makro ausgeführt wird, wenn ich nachträglich in der Spalte I eine Änderung vornehmen muss, die zu keiner neuen Zeile führen soll? Viele Grüße Gerhard
ich nehme an, dass es da nix gibt, woran Excel entscheiden kann, ob eine Zeile einzufügen ist oder nicht? Da würde dann nur vor jedem Einfügen (am Anfang des Makros) eine Sicherheitsabfrage helfen, z.B.: If MsgBox("Wollen Sie eine neue Zeile einf?gen?", vbYesNo) = vbNo Then Exit Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28 • gepf_04081949