Hallo Wolle,
sowas läst sich gut mit VBA lösen. Die zu kopierenden Zeilen der Tabelle 2 müssen aber vorher definiert sein, zB ein fester Bereich oder man macht eine Abfrage mit einer Schleife wo zum Beispiel die Spalte „A“ nach nicht leeren Zellen durchsucht wird oder ob die Zellen ein Datum enthält und diese Zeilen werden dann kopiert.
Muss in der Tabelle 1 ein X eingetragen werden oder wäre eine Lösung mit einem Button besser. Beides geht, mit einem Button ist es eleganter.
Code in Tabelle 1 Worksheet Change kopieren (sucht einzelen Zeilen und kopiert sie dann):
If Cells(1, 1) = „X“ Then ’ A1=X?
Application.ScreenUpdating = False 'macht das Makro schneller
Application.EnableEvents = False 'Makro für weiter Änderung in der Tabelle gesperrt.
Dim i As Integer
Dim Bereich As Range
Set Sh = Sheets(1)
i = 20 'zeilenzähler
For Each Bereich In Sheets(2).Rows(„1:500“) 'Bereich=Zeile 1 bis 500 Tabelle 2. Max. 65536, älter Excel Vers. bis 32768
If Not Bereich.Cells(1, 1) = Empty Then 'ist Zelle der Spalte A nicht leer dann
Bereich.Copy Sh.Cells(i, 1) 'kopiert ganze zeile in Tabelle 1 ab Zeile 20
i = i + 1
End If
Next
Sh.Cells(1, 1) = Empty ’ X in A1 löschen
Application.ScreenUpdating = True
Application.EnableEvents = True
Sh.PageSetup.PrintArea = „$A$1:blush:Spalte$“ & i - 1 ’ druckbereich festlegen (i-1=letzte kopierte Zeile; $Spalte= Spalten angeben zb. $F)
Sh.PrintOut 'drucken
End If
Code für einen zusammenhängenden Bereich (ohne Leerzeilen!!):
If Cells(1, 1) = „X“ Then ’ A1=X?
Application.ScreenUpdating = False 'macht das Makro schneller
Application.EnableEvents = False 'Makro für weiter Änderung in der Tabelle gesperrt.
Set Sh1 = Sheets(1)
Set Sh2 = Sheets(2)
Sh2.Range(„A1“).CurrentRegion.Copy Sh1.Cells(20, 1) 'Bereich kopieren
Sh1.Cells(1, 1) = Empty ’ X in A1 löschen
Application.ScreenUpdating = True
Application.EnableEvents = True
Set Bereich1 = Sh2.Range(„A1“).CurrentRegion
Set Bereich2 = Bereich1.Resize(Bereich1.Rows.Count + 19) 'Bereich erweitern
Sh1.PageSetup.PrintArea = Bereich2.Address ’ druckbereich festlegen
Sh1.PrintOut 'drucken
End If
Ein Programmierung mit einen Button ist der Code fast gleich, nur die If-Abfrage mit dem „X“ würde entfallen sowie das letzte End If. Hierzu müsstest du mit dem Formular-Symbolleiste ein Schaltfläche (Button) im Bereich der Zelle A1 erstellen. Bei der Makrozuweisung gehst du auf NEU und im erscheinen Makroifenster kopierst du einen der beiden Codes (ohne die erste IF … und das letzte End If auch die Code-Zeile „Sh1… X in A1 löschen“ kannst du löschen).
Gruß Andreas