Excel VBA: Makro zum Einfügen von Zellinhalten als Werte

Melden

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

  1. Öffne Excel.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. 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:

  1. Direkt im Editor: Klicke in den Code und drücke F5.
  2. Ü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.
  3. Tastenkombination:
    • Drücke ALT + F8 in Excel.
    • Wähle das Makro aus -> Optionen.
    • Vergebe einen Buchstaben (z.B. w für Werte), dann kannst du es mit STRG + w starten.

Tipps für Profis:

  • Geschwindigkeit optimieren: Wenn du sehr viele Daten verarbeitest, schreibe Application.ScreenUpdating = False an den Anfang des Codes und Application.ScreenUpdating = True ans 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.
0