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. Hilfe

    in Microsoft Excel Hilfe
    Hilfe: Liebe Alle, ich bin ganz neu in diesem Forum und bräuchte Hilfe zu einem Excel Projekt. Ich möchte (siehe Bild 1) das die Felder die dort ausgefüllt werden automatisch in Bild 2 übertragen in...
  3. Aneignen von VBA-Kenntnissen - wie und wo?

    in Microsoft Excel Hilfe
    Aneignen von VBA-Kenntnissen - wie und wo?: Hallo zusammen, ich habe es ohne VBA-Kenntnisse geschafft, eine sehr umfangreiche, funktionsfähige Excel-Datei mit einigen Makros zu erstellen. Nun kommen im Laufe der Nutzung Fehlermeldungen,...
  4. Formelbezüge ändern sich nach Kopieren mit VBA nicht

    in Microsoft Excel Hilfe
    Formelbezüge ändern sich nach Kopieren mit VBA nicht: Hallo liebes Forum, So langsam bringt mich Excel um den Verstand, vieleicht könnt Ihr mir weiterhelfen... Ich Kopiere per button mit VBA 4 Source Zeilen (Eine Auftragserfassung und...
  5. MS ACCESS Insert into Foto in Datenbank

    in Microsoft Access Hilfe
    MS ACCESS Insert into Foto in Datenbank: Hallo. Ich benutze MS ACCESS im Office 365. Habe eine Anwendung geschrieben, in der in einem Formular ein Foto im Typ Bild dargestellt wird. Ich möchte nun dieses Foto mittels einem "Insert...
  6. Typen unvertäglich

    in Microsoft Excel Hilfe
    Typen unvertäglich: Ich versuche in meiner Tabelle ein Eingabeformular zu erstellen, bei dem ich in D13 einen "Key" eingebe, nach dem dann in der Tabelle gesucht wird und dann in den passenden Tabellen gespeichert...
  7. Eingabemaske mit Bearbeitung an bestimmter Stelle

    in Microsoft Excel Hilfe
    Eingabemaske mit Bearbeitung an bestimmter Stelle: Hallo, Leider bin ich noch ziemlich neu im VBA Bereich und ich sitze gerade an einer Eingabemaske für meine Datenbank. Ich glaube es ist etwas ambitionierter, aber selbst Anreize Dabei ist der...
  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