Excel VBA: Makro zum Einfügen von Zellinhalten als Werte
Dieses Tutorial zeigt dir, wie du in Excel VBA Makros erstellst, um Zellinhalte als Werte einzufügen (ähnlich wie „Inhalte einfügen“ -> „Werte“).
Warum VBA dafür nutzen? Es spart Zeit, wenn du regelmäßig Formeln in statische Daten umwandeln musst oder Daten von einem Blatt in ein anderes kopieren willst, ohne die Formatierung zu zerstören.
Schritt 1: Die VBA-Umgebung öffnen
- Öffne Excel.
- Drücke
ALT+F11, um den VBA-Editor zu öffnen. - Gehe im Menü auf Einfügen -> Modul. Ein leeres Fenster erscheint.
Schritt 2: Die drei gängigsten Methoden
Es gibt verschiedene Wege, Werte einzufügen. Hier sind die wichtigsten:
Methode A: Der klassische Weg (Copy & PasteSpecial)
Dies entspricht genau dem manuellen Klickweg.
Sub PasteValuesOnly()
' Bereich kopieren
Range("A1:A10").Copy
' Nur Werte in Zielzelle einfügen
Range("B1").PasteSpecial Paste:=xlPasteValues
' Den "Ameisenlauf" (Kopierrahmen) entfernen
Application.CutCopyMode = False
End Sub
Methode B: Die schnellste Methode (Value = Value)
Dies ist die "Profi-Methode". Sie umgeht die Zwischenablage komplett und ist bei großen Datenmengen viel schneller.
Sub DirectValueTransfer()
' Zielbereich = Quellbereich
Range("B1:B10").Value = Range("A1:A10").Value
End Sub
Hinweis: Hier müssen Quell- und Zielbereich die gleiche Größe haben.
Methode C: Formeln im gleichen Bereich in Werte umwandeln
Ideal, um Berechnungen zu "fixieren" und die Formeln zu löschen.
Sub ConvertFormulasToValues()
With Range("A1:C10")
.Value = .Value
End With
End Sub
Schritt 3: Fortgeschrittene Anwendung (Dynamisch)
In der Praxis weiß man oft nicht, wie lang eine Liste ist. So fügst du Werte ans Ende einer Liste an:
Sub PasteAtTheEnd()
Dim wsSource As Worksheet
Dim wsTarget As Worksheet
Dim lastRow As Long
Set wsSource = Sheets("Tabelle1")
Set wsTarget = Sheets("Tabelle2")
' Finde die nächste freie Zeile in Spalte A von Tabelle2
lastRow = wsTarget.Cells(wsTarget.Rows.Count, "A").End(xlUp).Row + 1
' Daten übertragen
wsTarget.Range("A" & lastRow).Value = wsSource.Range("A1").Value
End Sub
Schritt 4: Das Makro ausführen
Du hast nun drei Möglichkeiten, das Makro zu starten:
- Direkt im Editor: Klicke in den Code und drücke
F5. - Über eine Schaltfläche:
- Gehe in Excel zum Reiter Entwicklertools (falls nicht sichtbar: Rechtsklick auf Menüband -> Menüband anpassen -> Entwicklertools aktivieren).
- Einfügen -> Formularsteuerelemente -> Schaltfläche (Button).
- Ziehe den Button auf das Blatt und wähle dein Makro aus.
- Tastenkombination:
- Drücke
ALT+F8in Excel. - Wähle das Makro aus -> Optionen.
- Vergebe einen Buchstaben (z.B.
wfür Werte), dann kannst du es mitSTRG+wstarten.
- Drücke
Tipps für Profis:
- Geschwindigkeit optimieren: Wenn du sehr viele Daten verarbeitest, schreibe
Application.ScreenUpdating = Falsean den Anfang des Codes undApplication.ScreenUpdating = Trueans Ende. Das verhindert das Bildschirmflackern. - Fehler vermeiden: Achte darauf, dass das Zielblatt nicht geschützt ist, sonst bricht das Makro mit einer Fehlermeldung ab.
Zusammenfassung: Welche Methode wann?
- PasteSpecial: Wenn du nur Werte, aber z.B. die Kommentare oder Zahlenformate behalten willst.
- Value = Value: Der Standard für Geschwindigkeit und sauberen Code.
- With Range.Value: Um Formeln schnell im selben Bereich zu löschen.