Clever-Excel-Forum

Normale Version: VBA automatische Übernahme der Formel in eine Zelle
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Gemeinde,

ich habe das Problem, das ich in einer Tabelle ständig neue Zeilen ausfülle. Dabei werden in die Zellen der Spalten a bis c Werte eingetragen. Aus diesen Werten soll dann in die Zelle der Spalte d die Formel aus der Zelle oberhalb der gerade aktiven Zeile, in der neue Werte eingefügt werden, in die Zelle der Spalte d in der aktiven Reihe eingefügt werden. Dazu habe ich folgendes Makro geschrieben:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
a = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Cells(2, 4).Copy
Cells(a, 4).PasteSpecial xlPasteFormulas
End Sub


Bei der ersten Eingabe in eine leere Zeile in Spalte A funktioniert das prima, da ja die Variante a die Nummer der Zeile darüber enthält. Das Dumme ist nur, dass ja das Makro, jedesmal, wenn ich dann die Zelle a,4 verlasse, das Programm in eine Schleife gerät, da durch die Einfügefunktion ein SelectionChange erfolgt. Ich habe bisher leider noch keine Idee, wie ich dies Problem lösen kann. Kann mir jemand hierzu einen guten Tip geben?
Im Voraus vielen Dank.

[attachment=45585]
Hi,

wandle deine Daten in eine "Intelligente Tabelle" um, dann ergänzen sich die Zellen mit den Formeln automatisch und du brauchst kein Makro

VG Juvee
Hi,

Juvees Vorschlag ist definitiv besser als jedes Makro.

Je nach Einstellung der Excel-Optionen braucht es nicht einmal eine intelligente Tabelle um Formeln zu ergänzen. Dazu einfach den Haken in Datei-->Optionen-->Erweitert-->Bearbeitungsoptionen-->"Datenbereichsformate und -formeln erweitern" setzen. Dies ist mMn. sogar die Standard-Einstellung.

Die Mircosoft Hilfe schrieb:Erweitern von Datenbereichsformaten und Formeln    Wählen Sie diese Option aus, um neue Elemente, die am Ende einer Liste hinzugefügt wurden, automatisch so zu formatieren, dass sie dem Format der restlichen Liste entsprechen. Formeln, die in jeder Zeile wiederholt werden, werden ebenfalls kopiert. Um erweitert zu werden, müssen Formate und Formeln in mindestens drei der fünf letzten Zeilen vor der neuen Zeile angezeigt werden.

So wenn du jetzt immer noch auf deinem Makro bestehst: Dafür nimmt man nicht das Selection-Change-Event sondern das Change-Event. Selection-Change wird mit jedem Klick und jeder Cursor-Bewegung ausgelöst. Das ist viel zu oft. Change wird nur bei Änderungen im Blatt, sprich einem Eintrag in eine Zelle ausgelöst.
Aber selbst dann wirst du mit deinem Makro in eine Schleife geraten, da du nirgends prüfst, was geändert wurde.
Mit dem Holzhammer könnte man das verhindern, indem man die Events mit Application.EnableEvents=True/False kurzfristig unterdrückt und wieder frei gibt. Besser ist es jedoch zu prüfen, welche Zelle betroffen ist und entsprechend zu reagieren.