ich brauche ein VBA Skript das mir aus meiner Excel Tabelle im Tabellenblatt "Überblick" aus dem Zellbereich von B27:O2336 nur die jeweils eingeblendeten(!) Zeilen in das Tabellenblatt "Export" ab der Zelle B14 einfügt/ kopiert.
Wichtig dabei ist folgendes:
1)
In den Zellbereichen von B27:Q2336 im Sheet Überblick sind natürlich überall Formeln eingetragen, Excel soll beim kopieren in das Tabellenblatt Export jedoch nur die Werte übernehmen - nicht die Formeln.
Ebenfalls müssen alle anderen Zellformatierungen für den zu kopierenden Bereich übernommen werden
- Rahmenlinien
- Enthaltene Bedingte Formatierungen
- Spaltebreite und Zeilenhöhe
- Enthaltene Füllfarben
- und alle sonstigen Formatierungen wie Schriftart + Schriftgröße usw.
Das bedingt natürlich, dass im gesamten Zellbereich ab B14 (bis eben max. O2323)
vor dem Kopiervorgang dieser Bereich immer wieder "resettet" wird, heißt alle enthaltenen Formatierungen löschen, Zellhöhe und Spaltenbreite wieder auf Standard zurückgesetzt wird.
Wie bekomme ich das sinnvoll gelöst?
Bisher nutze ich folgende Formel, die aber z. B. beim Kopiervorgang die Zeilenhöhe nicht beachtet, weshalb ich diese manuell ändern muss, sofern eine bestimmte IF Abfrage zuvor zutrifft.
Diese kompletten IF Abfragen entfallen aber, wenn es eine Methode gibt, in der ich einfach alle eingeblendeten Zeilen aus der genannten Tabelle 1:1 (nur statt Formeln eben als Werte) in das zweite Tabellenblatt kopieren kann.
If [B1] = 1 And [B2] = 1 And [B5] 1 And [B6] 1 Then
Range("B27:O2155").Select
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy
Sheets("Export").Select
Rows("15:15").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.RowHeight = 15
With Selection
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Selection.ClearContents
Selection.FormatConditions.Delete
Range("B14").Select
Sheets("ÜberblicK").Select
Selection.Copy
Sheets("Export").Select
ActiveSheet.Paste
Range("D17").Select
Range("B:B").ColumnWidth = 57
Range("C:C").ColumnWidth = 10.7
ElseIf [B1] = 2 And [B2] = 1 And [B5] 1 And [P1] = 2 And [B6] 1 Then
Range("B27:O2155").Select
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy
Sheets("Export").Select
Rows("15:15").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.RowHeight = 15
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Selection.ClearContents
Range("B14").Select
Sheets("ÜberblicK").Select
Selection.Copy
Sheets("Export").Select
ActiveSheet.Paste
Range("D17").Select
Range("B:B").ColumnWidth = 57
Range("C:C").ColumnWidth = 10.7
For Ze = 20 To 98 Step 6
Rows(Ze).RowHeight = 4.5
Next
For Ze = 99 To 2336 Step 6
Rows(Ze).RowHeight = 4.5
Next