Office: (Office 365) VBA dyn. Zellen kopieren und am ende der Liste einfügen

Helfe beim Thema VBA dyn. Zellen kopieren und am ende der Liste einfügen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Guten Morgen zusammen, ich hoffe ihr könnt mir helfen, da ich mich zwar mit Excel auskenne aber mit Makros nichts zu tun habe. Ich habe folgendes... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von CJ5286, 11. März 2022.

  1. CJ5286 Neuer User

    VBA dyn. Zellen kopieren und am ende der Liste einfügen


    Guten Morgen zusammen,

    ich hoffe ihr könnt mir helfen, da ich mich zwar mit Excel auskenne aber mit Makros nichts zu tun habe.

    Ich habe folgendes Problem:

    Ich möchte einen Zelleneinträge kopieren und die Zellenwerte in eine anderen Tabelle am Ende einfügen.

    Der zu kopierende Bereich ist jedoch dynamisch, soll heißen es können mal Einträge von 1 Zeile bis zu 25 Zeilen sein. Die Inhalten sind in den Spalten A bis N aufgeführt. Kopiert werden sollen aber nur die Zeilen mit einem Wert/Text. In allen Zellen a1 bis n25 sind jedoch Formeln, die nicht berücksichtigt werden sollen.

    Die Werte sollen dann in einer anderen Liste (anderes Registerblatt) am Ende eingefügt werden, sodass sich dann sukzessive eine Datenbank ergibt. Da diese Tabelle mit jedem Vorgang auch erweitert, ist das ende der Liste somit auch dynamisch.

    Leider geht das natürlich nicht über die Makroaufzeichnung.



    Ich hoffe ihr könnt mir helfen.



    Vielen Dank schon einmal.
     
    CJ5286, 11. März 2022
    #1
  2. Exl121150 Erfahrener User
    Hallo,

    kopiere folgendes Makro "Kopieren" in ein allgemeines Codemodul (so wie es auch der Makrorekorder getan hätte):
    Code:
    Option Explicit
    
    Public Sub Kopieren()
      Dim WsQ As Worksheet, WsZ As Worksheet
      Dim rgQ As Range, rgZ As Range
      Dim Zeile1Z As Long
     
      Set WsQ = Worksheets("Quelle")  '<== Quellblatt (anpassen!)
      Set WsZ = Worksheets("Ziel")    '<== Zielblatt  (anpassen!)
     
      'Quellbereich ermitteln:
      Set rgQ = WsQ.Range("A1:N25")
     
      'Zeilennummer der ersten freien Zeile des Zielbereichs ermitteln
      '(Die Spalte A wird dafür überprüft):
      Zeile1Z = WsZ.Cells(Rows.Count, "A").End(xlUp).Row + 1
     
      'Kopiert werden: Werte und Zahlenformate
      rgQ.Copy
      WsZ.Cells(Zeile1Z, "A").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, _
                              Operation:=xlNone, SkipBlanks:=False, Transpose:=False
     
      'Kopiermodus beenden
      Application.CutCopyMode = False
    
    End Sub
    
    Die beiden Namen für das Quellblatt und für das Zielblatt müssen an deine Arbeitsblattnamen (=Tabellenregister) angepasst werden. Die Namensvorbesetzung im Makro ist "Quelle" und "Ziel".

    Das Makro kann über die Tastenkombination Alt+F8 (Makrodialog) nach Auswahl des Makros "Kopieren" und Drücken des Buttons "Ausführen" aufgerufen werden.
     
    Exl121150, 11. März 2022
    #2
  3. CJ5286 Neuer User
    Hallo Exl121150

    vielen Dank erst einmal für die schnelle Antwort.
    Die Funktion geht auch, leider aber nicht so ganz wie ich es mir gewünscht hatte. Leider werden die Daten weiter unten eingetragen und auch alle Zellen kopiert. Es sollen aber nur die Zellen aus der Liste "Übertrag" kopiert werden, bei denen die Formeln Ergebnisse ausgeben. Zellen die Leer sind sollen nicht kopiert werden.
    Wahrscheinlich ist das Problem, dass meine Wennfunktion ein "" ausgibt.
    Ich habe eine Bsp. Datei mal hochgeladen. Vielleicht erklärt sich dann meine Thematik.

    Ich hoffe du kannst mir weiterhelfen.
     
    CJ5286, 11. März 2022
    #3
  4. Exl121150 Erfahrener User

    VBA dyn. Zellen kopieren und am ende der Liste einfügen

    Hallo,

    die Probleme aus deinem letzten Posting hätten vermieden werden können, wenn du gleich eine Datei mit Wunschergebnissen hochgeladen hättest.

    In der beiliegenden Datei habe ich ein Arbeitsblatt "test(2)" eingefügt, das als testweises Kopierziel der Daten aus "Übertrag!A7:N31" dient. Dabei werden jetzt die sogenannten "Leerzeilen" nicht mehr kopiert.
    Sollen andere Arbeitsblätter bzw. Bereiche als Quelle oder Ziel des Kopierens verwendet werden, sind sie wieder zuerst an den gekennzeichneten Stellen im Makro zu ändern.
    Code:
    Option Explicit
    
    Public Sub Kopieren()
      Dim wsQ As Worksheet, wsZ As Worksheet
      Dim rgQ As Range, rgZeileQ As Range
      Dim ZeileZ As Long
    
      Set wsQ = Worksheets("Übertrag")  '<== Quellblatt (anpassen!)
      Set wsZ = Worksheets("test(2)")   '<== Zielblatt  (anpassen!)
    
      'Quellbereich ermitteln:
      Set rgQ = wsQ.Range("A7:N31")     '<== Quellbereich im Quellblatt (anpassen!)
    
      'Zeilennummer der ersten freien Zeile des Zielbereichs ermitteln
      '(Die Spalte A wird dafür überprüft):
      ZeileZ = wsZ.Cells(Rows.Count, "A").End(xlUp).Row + 1
    
      'Kopiert werden in nicht leeren Zeilen: Werte und Zahlenformate 
      For Each rgZeileQ In rgQ.Rows
         If Not IstLeerZeile(rgZeileQ) Then
            rgZeileQ.Copy
            wsZ.Cells(ZeileZ, "A").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, _
                                   Operation:=xlNone, SkipBlanks:=False, Transpose:=False
            ZeileZ = ZeileZ + 1
         End If
      Next rgZeileQ
      'Kopiermodus beenden
      Application.CutCopyMode = False
    
    End Sub
    '
    'Teste, ob die Zellen im Bereich "rgZeile" alle "leer" sind:
    '
    Public Function IstLeerZeile(rgZeile As Range) As Boolean
      Dim rgZelle As Range
      Dim vWert As Variant
     
      IstLeerZeile = True
      For Each rgZelle In rgZeile.Cells
         vWert = rgZelle.Value
         If Not IsEmpty(vWert) Then
            Select Case VarType(vWert)
               Case vbString:
                    'falls etwas anderes als "" enthalten ist
                    If Len(vWert) Then IstLeerZeile = False: Exit Function
               Case vbBoolean:
                    'falls WAHR oder FALSCH enthalten ist
                    IstLeerZeile = False: Exit Function
               Case Else:
                    'falls ein sonstiger numerischer Wert (auch 0) enthalten ist
                    IstLeerZeile = False: Exit Function
            End Select
         End If
      Next rgZelle
    End Function
    
    Aufgerufen wird das Makro genauso wie in meinem letzten Posting beschrieben.

    Mit der ebenfalls enthaltenen Funktion IstLeerZeile(Zellbezug) kann auch in Arbeitsblättern getestet werden, ob es sich beim Zellbereich "Zellbezug" um lauter "Leerzellen" handelt, zB. im Arbeitsblatt "Übertrag":
    =IstLeerZeile(A10:N10)
    falls das Resultat WAHR ist, handelt es sich um lauter "Leerzellen"; falls die Funktion FALSCH retourniert, ist mindestens 1 Zelle nicht "leer".
     
    Exl121150, 12. März 2022
    #4
  5. CJ5286 Neuer User
    Guten Morgen Exl121150
    vielen vielen Dank für die Unterstützung. Klappt genauso wie angedacht.
    Auch die Funktion ISTLeerZeile kannte ich bisher nicht. Aber lernt ja nie aus.
     
    CJ5286, 14. März 2022
    #5
  6. Exl121150 Erfahrener User
    Hallo,
    diese Funktion gibt es auch normalerweise nicht. Ich habe sie dir im Makro erstellt, wie du an folgender Makrozeile ersehen kannst:
    Public Function IstLeerZeile(rgZeile As Range) As Boolean
    In den dann folgenden Zeilen bis zur Zeile "End Function" ist sie enthalten.
     
    Exl121150, 14. März 2022
    #6
Thema:

VBA dyn. Zellen kopieren und am ende der Liste einfügen

Die Seite wird geladen...
  1. VBA dyn. Zellen kopieren und am ende der Liste einfügen - Similar Threads - VBA dyn Zellen

  2. VBA: Kein "Undo" mehr möglich?

    in Microsoft Excel Hilfe
    VBA: Kein "Undo" mehr möglich?: Hallo, ich habe meine Bestell-Tabelle so abgeändert, dass einiges per Makro, bzw. mittels Buttons übertragen wird. Also zum Beispiel wird mit einem Klick auf den Button die Lieferadresse gleich...
  3. EINLADUNG Access-Stammtisch Hannover Nr. 63 LIVE am Mittwoch 19.11.2025

    in Microsoft Access Hilfe
    EINLADUNG Access-Stammtisch Hannover Nr. 63 LIVE am Mittwoch 19.11.2025: EINLADUNG zum Access-Stammtisch Hannover Nr. 63 LIVE Endlich ist es wieder soweit! Persönlicher Austausch bei Speis und Trank. Interessante Gespräche in netter Atmosphäre. Termin: Mittwoch,...
  4. VBA: Notizen in Zelle einfügen

    in Microsoft Excel Hilfe
    VBA: Notizen in Zelle einfügen: Hallo zusammen, ich möchte über cells(x,y).AddComment "Text" eine Notiz einfügen. Das funktioniert leider nur sehr unzuverlässig. Mal ist der Text in der Notiz, mal wird nur eine leere Notiz...
  5. ActiveX Steuerelemente nicht verfügbar im VBA Entwurfsmodus.

    in Microsoft Excel Hilfe
    ActiveX Steuerelemente nicht verfügbar im VBA Entwurfsmodus.: Guten Tag allerseits. Ich habe eine Excel-Anwendung (xlsm mit Macros), die auf einem Laptop Probleme macht. Auf allen anderen PC's läuft es perfekt, auf dem genannten Laptop scheitern Zugriffe auf...
  6. VBA: Datei Upload mit http: POST

    in Microsoft Excel Hilfe
    VBA: Datei Upload mit http: POST: Hallo, schönen Gruß an alle; ich hoffe jemand hat einen Hinweis wo ich ansetzen kann. Problembeschreibung: · VBA aus Excel (das muss auch so bleiben) und funktioniert anscheinend ja auch...
  7. VBA - Dateinamen anhand von Unterstrich und Großbuchstaben trennen

    in Microsoft Excel Hilfe
    VBA - Dateinamen anhand von Unterstrich und Großbuchstaben trennen: Hallo zusammen, ich würde gern folgendes Projekt realisieren. Ich bekomme regelmäßige pdf- und jpg-Dateien (immer im Format Nachname_Vornamen_Geburtsdatum - z. B.:...
  8. VBA - Textbox in UF mit Inhalt eines dyn. Bereiches füllen

    in Microsoft Excel Hilfe
    VBA - Textbox in UF mit Inhalt eines dyn. Bereiches füllen: Hallo, meine Frage bezieht sich auf eine sehr umfangreiche Firmendatei, weshalb ich leider "nicht mal eben" ein Beispiel posten kann. Aber da ich nur eine bestimmte Schreibweise in VBA suche,...
Schlagworte:
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden