Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 20:05:21
28.04.2024 18:33:31
28.04.2024 18:25:12
28.04.2024 14:18:05
Anzeige
Archiv - Navigation
1932to1936
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zeilen einer Tabelle kopieren

Zeilen einer Tabelle kopieren
20.06.2023 15:56:03
Michael

Hallo zusammen,
diese Seite konnte mir bisher einige Male weiterhelfen und konnte hier immer die Lösung finden. Jetzt möchte ich mich doch mit einer Frage an euch wenden.

Ich habe eine dynamische Tabelle (Quelltabelle). In Spalte 1 bis 5 befinden sich Werte und Formeln (Spalte 3 verweist mit einer Formel auf Spalte 2). In Spalte 6 sind den entsprechenden Zeilen Bilder beigefügt, die von ihren Zellposition und -größe unabhängig sind, um die Bilder den Zellen zuzuordnen. Mein Problem besteht darin die sichtbaren Zeilen der Tabelle (wenn diese gefiltert ist) in eine andere dynamische Tabelle (Zieltabelle) auf einem anderen Tabellenblatt zu kopieren.
Von den Spalten 1 bis 5 sollen nur die Werte kopiert werden. Aus Spalte 6 muss der gesamte Zellinhalt kopiert werden, da ja sonst das Bild nicht kopiert wird.

Eine weitere Besonderheit ist (habe ich gelöst, aber hier der Vollständigkeit halber):
Die Zieltabelle ist zu Beginn leer, sprich eine Überschriftenzeile und darunter eine leere Zeile. Deshalb muss, wie im Code zu sehen, erst geprüft werden, ob die erste Zeile leer ist. Wenn ja, dort einfügen, wenn nicht Zeilen zählen und darunter einfügen.


Hier mein bisheriger Code:

Sub KopiereSichtbareZeilenMitBild()
    Dim QuellTabelle As ListObject
    Dim ZielTabelle As ListObject
    Dim QuellZeile As Range
    Dim ZielZeile As Range
    Dim QuellBild As Object
    Dim ZielBild As Object
    Dim Zeile As ListRow
    
    ' Setze die Quelltabelle
    Set QuellTabelle = Sheets("Quelltabelle").ListObjects("Tabelle1")
    
    ' Setze die Ziel Tabelle
    Set ZielTabelle = Sheets("Zieltabelle").ListObjects("Tabelle2")
    
    ' Überprüfe, ob die Quelltabelle Daten enthält
    If QuellTabelle.ListRows.Count  1 Then
        MsgBox "Die Quelltabelle enthält keine Daten.", vbInformation
        Exit Sub
    End If
    
    ' Kopiere die sichtbaren Zeilen
    For Each Zeile In QuellTabelle.ListRows
        If Zeile.Range.EntireRow.Hidden = False Then
            Set QuellZeile = Zeile.Range
             ' Überprüfen, ob die Zieltabelle leer ist
        If ZielTabelle.Range(2, 1) = "" Then
            ' Füge die Quellzeile in die erste Zeile der Zieltabelle ein
            QuellZeile.Copy Destination:=ZielTabelle.Range(2, 1)
        Else
            ' Füge für jede kopierte Zeile eine neue Zeile in der Zieltabelle hinzu und kopiere die Daten
            Set ZielZeile = ZielTabelle.ListRows.Add.Range
            QuellZeile.Copy Destination:=ZielZeile
        End If
            
            Application.CutCopyMode = False
        End If
    Next Zeile
    
    ZielTabelle.Parent.Activate
    
End Sub


Ich hoffe, ich habe es verständlich erklärt.
Vielen Dank im Voraus!

Gruß
Michael

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen einer Tabelle kopieren
20.06.2023 21:29:09
ralf_b
ungetestet
' Kopiere die sichtbaren Zeilen
    For Each Zeile In QuellTabelle.ListRows
        If Zeile.Range.EntireRow.Hidden = False Then
             With ZielTabelle.ListRows.Add
               .Cells(1).Resize(1, 5).Value = Zeile.Range.Cells(1).Resize(1, 5)
               Zeile.Range.Cells(6).Copy .Cells(6)
            End With
        End If
    Next Zeile


AW: Zeilen einer Tabelle kopieren
21.06.2023 08:49:05
Michael
Hallo Ralf,
danke für deine Antwort. Leider bekomme ich in der Zeile
.Cells(1).Resize(1, 5).Value = Zeile.Range.Cells(1).Resize(1, 5)
direkt einen Laufzeitfehler '438' ausgegeben

Ich habe auch schon folgendes probiert. Da bekomme ich aber den Laufzeitfehler '91': Objektvariable oder With-Blockvariable nicht festgelegt angezeigt. Markiert wird mir "Set QuellSpalte = Spalte.Range" obwohl ich diese definiert habe

Sub KopiereSichtbareZeilenMitBild2()
    Dim QuellTabelle As ListObject
    Dim ZielTabelle As ListObject
    Dim QuellZeile As Range
    Dim QuellSpalte As Range
    Dim ZielZeile As Range
    Dim QuellBild As Object
    Dim ZielBild As Object
    Dim Zeile As ListRow
    Dim Spalte As ListColumn
    Dim QuellBereich As Range
    Dim ZielBereich As Range
    
    ' Setze die Quelltabelle
    Set QuellTabelle = Sheets("Quelltabelle").ListObjects("Tabelle1")
    
    ' Setze die Zieltabelle
    Set ZielTabelle = Sheets("Zieltabelle").ListObjects("Tabelle2")
    
    ' Überprüfe, ob die Quelltabelle Daten enthält
    If QuellTabelle.ListRows.Count  1 Then
        MsgBox "Die Quelltabelle enthält keine Daten.", vbInformation
        Exit Sub
    End If
    
    ' Kopiere die sichtbaren Zeilen
    For Each Zeile In QuellTabelle.ListRows
        If Zeile.Range.EntireRow.Hidden = False Then
            Set QuellZeile = Zeile.Range
            Set QuellSpalte = Spalte.Range
            Set QuellBereich = QuellZeile.Resize(, 5) ' Erster fünf Spalten-Bereich
            
            ' Überprüfen, ob die Zieltabelle leer ist
              If ZielTabelle.Range(2, 1) = "" Then
            
            ' Füge die Quellzeile in die erste Zeile der Zieltabelle ein
                QuellBereich.Copy
                ZielTabelle.Range(2, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, _
                                                     Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                        
                QuellSpalte.Copy Destination:=ZielTabelle.Range(2, 6) ' Sechste Spalte
              
              
              Else
                ' Füge für jede kopierte Zeile eine neue Zeile in der Zieltabelle hinzu und kopiere die Daten
                Set ZielZeile = ZielTabelle.ListRows.Add.Range
                Set ZielBereich = ZielZeile.Resize(, 5) ' Erster fünf Spalten-Bereich
                QuellBereich.Copy Destination:=ZielBereich
                QuellZeile.Cells(1, 6).Copy Destination:=ZielZeile.Cells(1, 6) ' Sechste Spalte
            End If
            
            
            Application.CutCopyMode = False
        End If
    Next Zeile
    
    ZielTabelle.Parent.Activate
    
End Sub


Anzeige
AW: Zeilen einer Tabelle kopieren
21.06.2023 18:17:24
ralf_b
schreibe vor das .Cells(1).Resize(1, 5).Value
ist nur ein Versuch. ich schrieb ja "ungetestet"
.Range

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige