Per VBA Formel zu Wert
Dass Sie mit Bordmitteln ein durch eine Formel oder Funktion berechnetes Ergebnis in einen „einfachen” Wert umwandeln können, wird Ihnen bekannt sein: Kopieren und Als Wert an gleicher Stelle wieder einfügen. Und was Sie „zu Fuß” machen können, das lässt sich natürlich auch per Makro/VBA erledigen. Der einfachste Weg wäre hier, den Vorgang mit dem Makrorecorder aufzuzeichnen und bei der Gelegenheit vielleicht gleich eine Tastenkombination, einen Shortcut zuzuweisen.
Nun ist es eine altbekannte Weisheit, dass der aufgezeichnete Code selten optimal ist. Und auch nicht immer unbedingt übersichtlich. Da ist es manchmal vorteilhafter, selbst einige Zeilen Code zu schreiben oder sich einer vorgefertigten Lösung zu bedienen. Hier einmal in Kurzform zwei Lösungen, die Sie so einsetzen können. Die erste ist für die aktuelle Zelle gedacht. Auch wenn mehrere Zellen markiert sind, wird nur die aktuelle Zelle umgewandelt:
Sub RngFormelZuWert() Dim c As Range For Each c In Selection c.Value = c.Value Next c End Sub
Ja, ich weiß, dass es auch ohne das Wort Value geht, weil es in diesem Fall die Default-Eigenschaft ist. Aber sicher ist sicher, und so funktioniert es auch noch in 10 Jahren, selbst wenn Microsoft sich wieder einmal dieses oder jenes einfallen lässt …
Die zweite Möglichkeit wäre, dass in einem markierten Bereich alle Zellen so „behandelt” werden sollen. Dann führt dieser Code zum Ziel:
Sub RngFormelZuWert() Dim c As Range For Each c In Selection c.Value = c.Value Next c End Sub
Sie sehen, dass das kaum mehr Code ist als im ersten Beispiel.Und für alle, die es gerne kurz und knapp haben möchten:
Sub Sel2Val() Selection.Value = Selection.Value End Sub
Selbstredend lässt sich das auch als Add-In speichern und/oder mit einem Shortcut starten. Die Tastenkombination können Sie übrigens auch später nachrüsten, siehe hier.
[NachObenLetzte Verweis=„Codeschnipsel: Wert statt Formel (VBA)”]