Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Kopieren aber ohne leere Zellen

Forumthread: VBA Kopieren aber ohne leere Zellen

VBA Kopieren aber ohne leere Zellen
17.02.2003 09:54:48
Robert
Hallo Ihr allen,

Hoffentlich könnt Ihr mich mal wieder helfen.
Ist es möglich mittels VBA so zu programmieren, dass es nur Daten von gegebenen Bereiche kopiert, wenn die Bereiche Daten haben.

z.B.:
Auf Arbeitsblatt "Daten"

Im Bereich "B1:E20" hat es Daten

Im Bereich "B21:E41" hat es keine Daten

Im Bereich "B42:E62" hat es Daten

Ich würde gerne sehen, dass nur Bereich "B1:E20" & Bereich "B42:E62
auf Arbeitsblatt "Daten_Final" hinter einander eingefügt werden.

Es muss also leere Bereiche automatisch erkennen und übergehen.

Es wäre schon, wenn jemanden mir mit diesem Problem helfen kann. Ich habe dieses Problem vor ein paar Wochen schon mal aufs Forum gehabt, nur leider hat niemanden geantwortet.

Im Fall das ich nicht deutlich genug bin, bitte lass es mir doch wissen.


Grüsse

Robert


Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: VBA Kopieren aber ohne leere Zellen
17.02.2003 10:28:41
L.Vira

Im Bereich "B21:E41" hat es keine Daten
Was, wenn nur eine Zelle im Bereich etwas enthält?

Re: VBA Kopieren aber ohne leere Zellen
17.02.2003 10:28:42
L.Vira

Im Bereich "B21:E41" hat es keine Daten
Was, wenn nur eine Zelle im Bereich etwas enthält?

Re: VBA Kopieren aber ohne leere Zellen
17.02.2003 10:35:59
Robert

Hallo,

Danke schon mal im voraus.
Es wird entweder im ganzen Bereich "B21:E41" Daten haben oder gar keine. In diesem Beispiel hat es einfach keinen.


Robert



Anzeige
Re: VBA Kopieren aber ohne leere Zellen
17.02.2003 10:38:14
L.Vira

If not application.counta([B21:E41])= 0 Then
[B21:E41].Copy ......
End if

Re: VBA Kopieren aber ohne leere Zellen
17.02.2003 11:24:36
Robert

Hallo,

Ich glaube dass geht nicht ganz auf. Es kopiert einfach alles, leere und Zellen mit Daten.
So wurde dass Blatt wo die daten eingefügt werden, gleich aussehen, wie dort wo sie kopiert wurden.

Es musste ja aber so aussehen; Kopiert und Eingefügt werden nur noch Bereich "B1:E20" & "B42:E62" Wenn möglich hintereinander antstatt untereinander

Robert



Sub copy2()

If Not Application.CountA("B6:F31") = "" Then

Range("B6:F31").copy

End If


End Sub

Anzeige
Re: VBA Kopieren aber ohne leere Zellen
17.02.2003 11:57:55
L.Vira

das war natürlich nur ein Codebeispiel und keine Komplettlösung.
CountA liefert einen numerischen Wert, nicht ""

Re: VBA Kopieren aber ohne leere Zellen
17.02.2003 11:57:55
L.Vira

das war natürlich nur ein Codebeispiel und keine Komplettlösung.
CountA liefert einen numerischen Wert, nicht ""

Nachfrage
17.02.2003 12:05:13
Martin Beck

Hallo Robert,

sind die Zellen wirklich leer, oder stehten z.B. Formeln drinnen, die Leerstrings zurückgeben?

Wie viele leere Bereiche snd denn ggf. zu berücksichtigen (nur einer?)?

Gruß
Martin Beck

Anzeige
Re: VBA Kopieren aber ohne leere Zellen
17.02.2003 13:26:47
Robert

Hallo,


Denkst du aber mich weiter helfen zu können mit der Info, den ich bis jetzt gebracht habe oder fehlt dir da etwas bestimmtes?

Gruss

Robert

Re: VBA Kopieren aber ohne leere Zellen
17.02.2003 13:31:16
Robert

Hallo,


Denkst du aber mich weiter helfen zu können mit der Info, den ich bis jetzt gebracht habe oder fehlt dir da etwas bestimmtes?

Gruss

Robert

Anzeige
Re: Nachfrage
17.02.2003 17:37:48
Robert

Hallo,


Alle Zellen sind wirklich leer.
Ich bin unterdessen aber schon viel weiter gekommen mit einer Lösung. Siehe unten.
Ich bin jetzt leider nicht mehr sehr lange am PC und werde Morgen weiter machen.
Für eventuelle Lösungen bin ich natürlich Dankbar und werde bescheid geben wie es lauft.

Gruss

Robert


Sub Zusammenfassung()
Dim i As Integer
Dim Counter As Integer
Dim Pkcounter As Integer

For i = 1 To 8

Counter = 4
Pkcounter = 1
Do Until Worksheets("data").Cells(Counter, 1).Value = ""

If Not (Worksheets("data").Cells(Counter + 2, 2)) = "" Then

Worksheets("data").Activate
ActiveSheet.Range(Cells(Counter, 2 + (7 * (i - 1))), Cells(Counter + 33, 2 + (7 * (i - 1)))).copy

Worksheets("data1").Activate
ActiveSheet.Cells(4 + (35 * (i - 1)), Pkcounter + 1).Select
ActiveSheet.Paste

Pkcounter = Pkcounter + 1

Else: End If

Counter = Counter + 35
Loop

Next i
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA: Daten kopieren ohne leere Zellen


Schritt-für-Schritt-Anleitung

Um Daten in Excel mithilfe von VBA zu kopieren, ohne leere Zellen zu berücksichtigen, kannst du die folgende Schritt-für-Schritt-Anleitung befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeinArbeitsblattName)" und wähle "Einfügen" > "Modul".

  3. Füge den folgenden Code ein:

    Sub KopierenOhneLeereZellen()
       Dim wsDaten As Worksheet
       Dim wsZiel As Worksheet
       Dim Bereich As Range
       Dim ZielZeile As Long
    
       Set wsDaten = ThisWorkbook.Worksheets("Daten")
       Set wsZiel = ThisWorkbook.Worksheets("Daten_Final")
       ZielZeile = 1
    
       For Each Bereich In wsDaten.Range("B1:E62").Areas
           If Application.WorksheetFunction.CountA(Bereich) > 0 Then
               Bereich.Copy wsZiel.Cells(ZielZeile, 1)
               ZielZeile = ZielZeile + Bereich.Rows.Count
           End If
       Next Bereich
    End Sub
  4. Führe das Makro aus: Drücke F5, um das Makro auszuführen. Es werden nur die Bereiche kopiert, die Daten enthalten.


Häufige Fehler und Lösungen

  • Problem: Das Makro kopiert alle Zellen, einschließlich leerer Zellen.

    • Lösung: Überprüfe, ob die Bedingung CountA(Bereich) > 0 korrekt ist. Diese Bedingung stellt sicher, dass nur Bereiche mit Daten kopiert werden.
  • Problem: Die Daten werden nicht in die gewünschte Zelle eingefügt.

    • Lösung: Stelle sicher, dass die Zielzeile (ZielZeile) korrekt aktualisiert wird, um die Daten hintereinander einzufügen.

Alternative Methoden

Wenn du keine VBA verwenden möchtest, kannst du auch die Funktion "Spezial Einfügen" in Excel nutzen:

  1. Bereich auswählen: Wähle den Bereich aus, den du kopieren möchtest.
  2. Kopieren: Drücke CTRL + C.
  3. Zielbereich auswählen: Klicke mit der rechten Maustaste auf die Zielzelle.
  4. Spezial Einfügen: Wähle "Inhalte einfügen" und dann "Nur Werte" oder "Transponieren", je nach Bedarf.

Diese Methode erfordert jedoch manuelles Eingreifen, um leere Zellen zu vermeiden.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du das Makro anpassen kannst:

  1. Kopieren von spezifischen Bereichen: Ändere den Bereich in der For-Schleife, wenn du nur bestimmte Teile deines Arbeitsblattes kopieren möchtest, z.B. Range("B1:E20").

  2. Daten in eine andere Arbeitsmappe kopieren: Du kannst den Zielarbeitsblatt mit einem anderen Workbook verknüpfen:

    Set wsZiel = Workbooks("AndereMappe.xlsx").Worksheets("ZielBlatt")

Tipps für Profis

  • Nutze die Application.ScreenUpdating = False und Application.ScreenUpdating = True-Befehle, um das Flackern des Bildschirms während der Ausführung des Makros zu verhindern.
  • Dokumentiere deinen Code mit Kommentaren, damit du später leichter nachvollziehen kannst, was jede Zeile bewirken soll.
  • Teste dein Makro immer in einer Kopie deiner Arbeitsmappe, um Datenverluste zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um nur bestimmte Zellen zu kopieren? Du kannst die Range im Code anpassen, um nur die gewünschten Zellen auszuwählen, z.B. Range("B1:E20").

2. Kann ich das Makro so ändern, dass leere Zellen mit Platzhaltern gefüllt werden? Ja, du könntest eine zusätzliche Bedingung einfügen, um leere Zellen mit einem bestimmten Wert zu ersetzen, bevor du das Kopieren durchführst.

3. Funktioniert das Makro in allen Excel-Versionen? Das VBA-Makro sollte in den meisten modernen Excel-Versionen (z.B. Excel 2010 und höher) funktionieren. Achte darauf, dass die entsprechenden Berechtigungen zum Ausführen von Makros aktiviert sind.

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