Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: vba nur Zellen mit Werten kopieren

vba nur Zellen mit Werten kopieren
19.08.2015 16:05:09
Max
Hallo liebe Alle,
ich bin Makro-Einsteiger und sitze nun schon länger vor einem Problem. Ich habe ein aufgezeichnetes Makro:
Range("AF9:AF251") = Range("AE9:AE251").Value
Selection.Copy
Range("AF9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
In Spalte AF habe ich jedoch nur in wenigen Zellen auch Werte. Die anderen Zellen in AF sind leer. Ich möchte, dass nur die Werte kopiert werden. D.h. Werte, die in AE schon stehen, bleiben erhalten und nur wenn das Feld in AE leer ist erhält es den Wert von AF.
Sollte es unverständlich sein, lasst es mich wissen.
Ich hoffe, Ihr könnt mir helfen!
VG

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: vba nur Zellen mit Werten kopieren
19.08.2015 16:16:47
selli
hallo max,
For i = 9 To 251
If Cells(i, 32) = "" Then
Cells(i, 32).Value = Cells(i, 31).Value
End If
Next i
gruß
selli

Variante mit Range
19.08.2015 16:20:45
Michael
Hi Max,
kann sein, ich bin mit E und F durcheinandergekommen, aber prinzipiell so:
Option Explicit
Sub kopierenWennLeer()
Dim c As Range
For Each c In Range("AE9:AE251")
If c.Value = "" And c.Offset(0, 1).Value  "" Then
c.Value = c.Offset(0, 1).Value
End If
Next
End Sub

Wenn Zelle in AE leer UND wenn in AF (.Offset(0,1) gibt die Zelle rechts zurück, geht auch mit -1 für die Zelle links) was drinsteht, dann hole Wert von AF nach AE.
Schöne Grüße,
Michael

Anzeige
AW: Variante mit Range
19.08.2015 17:06:31
Max
Hallo ihr beiden!
Vielen herzlichen Dank! Ich freu mich riesig! Beide Varianten funktionieren super!
Genial!
Toll, dass man auf euch zählen kann!
Viele Grüße

gerne, vielen Dank für die Rückmeldung owT
19.08.2015 17:55:52
Michael
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Nur Zellen mit Werten kopieren in Excel VBA


Schritt-für-Schritt-Anleitung

Um in Excel nur Zellen mit Werten zu kopieren, kannst Du ein VBA-Makro verwenden. Hier ist eine einfache Anleitung, um dies zu erreichen:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu:

    • Klicke im Menü auf "Einfügen" und wähle "Modul".
  3. Kopiere den folgenden Code und füge ihn in das Modul ein:

    Option Explicit
    Sub nurWerteKopieren()
       Dim c As Range
       For Each c In Range("AE9:AE251")
           If c.Value = "" And c.Offset(0, 1).Value <> "" Then
               c.Value = c.Offset(0, 1).Value
           End If
       Next c
    End Sub
  4. Schließe den VBA-Editor.

  5. Führe das Makro aus:

    • Gehe zurück zu Excel, drücke ALT + F8, wähle nurWerteKopieren aus und klicke auf "Ausführen".

Dieses Makro überprüft jede Zelle im Bereich AE9:AE251. Wenn eine Zelle leer ist und die Zelle rechts (AF) einen Wert hat, wird dieser Wert in die leere Zelle kopiert.


Häufige Fehler und Lösungen

  • Fehler: Makro läuft nicht
    Stelle sicher, dass deine Excel-Datei als Makro-fähige Datei (.xlsm) gespeichert ist.

  • Fehler: Werte werden nicht kopiert
    Überprüfe, ob die Zellreferenzen im Code korrekt sind. Achte darauf, dass der Bereich AE9:AE251 Deinen Anforderungen entspricht.

  • Fehler: Code wird nicht ausgeführt
    Vergewissere dich, dass die Makros in Excel aktiviert sind. Gehe dazu zu "Datei" > "Optionen" > "Trust Center" > "Einstellungen für das Trust Center" > "Makroeinstellungen" und aktiviere die entsprechenden Optionen.


Alternative Methoden

Eine einfache Möglichkeit, nur Zellen mit Inhalt zu kopieren, ist das Verwenden der PasteSpecial-Funktion. Hier ist ein Beispiel:

Range("AF9:AF251").Copy
Range("AE9").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=True

Mit dieser Methode kannst Du ebenfalls nur die Zellen mit Werten in einen anderen Bereich kopieren.


Praktische Beispiele

Hier sind zwei praktische Beispiele, wie Du nur Zellen mit Werten in Excel kopieren kannst:

  1. Einfaches Kopieren: Wenn Du nur Zellen mit Werten in den Bereich AF9:AF251 kopieren möchtest, kannst Du den folgenden Code verwenden:

    Sub einfacheKopie()
       Range("AF9:AF251").SpecialCells(xlCellTypeConstants).Copy Destination:=Range("AE9")
    End Sub
  2. Kopieren mit Bedingungen: Wenn Du die oben genannten Bedingungen einhalten möchtest, kannst Du den Code aus der Schritt-für-Schritt-Anleitung verwenden.


Tipps für Profis

  • Variablen deklarieren: Achte darauf, Deine Variablen zu deklarieren, um mögliche Fehler zu reduzieren.
  • Fehlerbehandlung einfügen: Füge eine Fehlerbehandlung in Deinem Makro ein, um unerwartete Probleme zu vermeiden.
  • Makros dokumentieren: Kommentiere Deinen Code, um die Nachvollziehbarkeit zu verbessern.

FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um andere Bereiche zu kopieren?
Du kannst die Zellreferenzen im Code ändern, um andere Bereiche zu kopieren. Ersetze einfach AE9:AE251 und AF durch die gewünschten Bereiche.

2. Funktioniert dieser Code in allen Excel-Versionen?
Ja, der Code sollte in allen modernen Excel-Versionen funktionieren, die VBA unterstützen, einschließlich Excel 2010, 2013, 2016, 2019 und Microsoft 365.

3. Was mache ich, wenn ich nur bestimmte Datentypen kopieren möchte?
Du kannst Bedingungen im Code hinzufügen, um nur bestimmte Datentypen zu prüfen, z.B. nur Zahlen oder Texte.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige