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.
     
  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.
     
  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.
     
  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 prüfen - eventuell Fehler

    in Microsoft Access Hilfe
    VBA prüfen - eventuell Fehler: Hallo Fachkräfte, hier ein VBA-Modul das einen Fehler enthalten soll. Case 2 wurde in 2022 geändert. In Case 3 , 4 oder ... soll auch noch ein Fehler sein. Wo genau was falsch ist und wie...
  3. VBA: Fehler 0x800a03ec beim Ribbon

    in Microsoft Excel Hilfe
    VBA: Fehler 0x800a03ec beim Ribbon: Hallo, ich habe eine Tabelle, die ich ohne Titelleiste anzeigen lassen möchte. Dazu habe ich mir zwei Makros geschrieben Sub AusBlenden() CommandBars("Worksheet Menu Bar").Enabled = False...
  4. Dateiname der aktuellen Datei als Variable

    in Sonstiges
    Dateiname der aktuellen Datei als Variable: Hallo in die Runde, kann ich unter VBA (Excel/Outlook) den Namen der aktuellen Datei auslesen und in einer Variable weiterverarbeiten? Danke im Voraus, Andreas
  5. Makro um E-Mails zu verschieben

    in Microsoft Outlook Hilfe
    Makro um E-Mails zu verschieben: Ich suche ein Makro das ich auf einem Rechner ausführen lassen kann um gelesene Mails z.B. auf dem Handy in einen bestimmten Ordner zu verschieben um meinen Posteingang "sauber" zu halten....
  6. Access VBA – Prüfen, ob eine PDF bereits geöffnet ist, bevor sie erneut geöffnet wird

    in Microsoft Access Hilfe
    Access VBA – Prüfen, ob eine PDF bereits geöffnet ist, bevor sie erneut geöffnet wird: Beschreibung: Ich arbeite mit Access VBA und habe eine Funktion implementiert, die beim Klick auf einen Button („Unterzeichnet“) einen Bericht als PDF exportiert. Was aktuell funktioniert:...
  7. VBA: Was ist "Tabelle1"?

    in Microsoft Excel Hilfe
    VBA: Was ist "Tabelle1"?: Hallo, ich bin gerade dabei einen VBA-Code für meine Zwecke anzupassen. Leider funktioniert eine der Berechnungen nicht mehr und ich bin nun auf Fehlersuche. Dabei verstehe ich (unter anderem)...
  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