Registriert seit: 02.01.2021
Version(en): 2019
Hallo zusammen,
ich habe ein Macro, welches mir bestimmte Zellen kopiert. Die Zeilenhöhen werden aber nicht berücksichtigt. Gibt es eine Möglichkeit, dass die Zeilenhöhe entsprechen des kopierten Sheets übernommen wird?
Hier der Code:
Code:
Sheets("Brief 1 (GME)").Cells.Delete
'Sheets("Brief Test").Cells.clear
'kopiert sichtbare Zellen im Sheet im Bereich G1:GJ28 und fügt sie im Worksheet (Brief GME) ein
'wenn auf einem Niveau kein Brief vorhanden ist, geht wird es übersprungen (ohne "on Error resume next" entsteht ein Laufzeitfehler)
On Error Resume Next
Sheets("Brief 1 (G)").Range("G1:GJ28").SpecialCells(xlCellTypeVisible).Copy Worksheets("Brief 1 (GME)").Cells(1, 1)
Sheets("Brief 1 (M)").Range("G1:GJ28").SpecialCells(xlCellTypeVisible).Copy Worksheets("Brief 1 (GME)").Cells(29, 1)
Sheets("Brief 1 (E)").Range("G1:GJ28").SpecialCells(xlCellTypeVisible).Copy Worksheets("Brief 1 (GME)").Cells(57, 1)
On Error GoTo 0
'Seitenumbruch vor Zeilen 29 und 58
Worksheets("Brief 1 (GME)").HPageBreaks.Add Before:=Worksheets("Brief 1 (GME)").Rows(29)
Worksheets("Brief 1 (GME)").HPageBreaks.Add Before:=Worksheets("Brief 1 (GME)").Rows(57)
LG Tina
Registriert seit: 04.11.2014
Version(en): Office 365 Beta
Hi,
pass die Zeilenhöhe im Anschluss des Kopiervorgangs immer direkt an - nach diesem Muster:
Code:
Sub til()
Rows(10).Copy Rows(2)
Rows(2).RowHeight = Rows(10).RowHeight
End Sub
Registriert seit: 12.03.2016
Version(en): Excel 2003
12.03.2022, 11:52
(Dieser Beitrag wurde zuletzt bearbeitet: 12.03.2022, 12:15 von Gast 123.)
Hallo
statt jede Zeile einzeln anzupassen würde ich den gesamten Bereich auf einheitliche Zeilenhöhe setzen. Sofern im Bereich Daten enthalten sind.
mfg Gast 123
Code:
Sub test()
'Zeilenhöhe nur kopueren wenn Daten vorhanden sind!
Zahl = Sheets("Brief 1 (G)").Range("G1:GJ28").SpecialCells(xlCellTypeVisible).Count
If Zahl > 0 Then Sheets("Brief 1 (G)").Rows("1:28").Copy Worksheets("Brief 1 (GME)").Rows(1)
Zahl = Sheets("Brief 1 (G)").Range("G1:GJ28").SpecialCells(xlCellTypeVisible).Count
If Zahl > 0 Then Sheets("Brief 1 (M)").Rows("1:28").Copy Worksheets("Brief 1 (GME)").Rows(29)
Zahl = Sheets("Brief 1 (G)").Range("G1:GJ28").SpecialCells(xlCellTypeVisible).Count
If Zahl > 0 Then Sheets("Brief 1 (E)").Rows("1:28").Copy Worksheets("Brief 1 (GME)").Rows(57)
'kopierte Daten wieder löschen für SpecialCells.Visible!
Worksheets("Brief 1 (GME)").Rows("1:100").ClearContents
'** Hier das normale Kopierprogramm:
End Sub
Hallo
bei der 1. Lösung hatte ich wohl einen kleinen Denkfehler. Spielt keine Rolle, dann probier es bitte mal so:
Hinweis: Der Befehl GoSub ist im Forum nicht üblich, ich verwende ihn trotzdem. Er muss aber mit EXIT SUB beendet werden!!
mfg Gast 123
Code:
Sub Zeilenhöhe()
Dim Brief As Worksheet, z As Integer, Zahl As Integer
Sheets("Brief 1 (GME)").Cells.Delete
On Error Resume Next
Sheets("Brief 1 (G)").Range("G1:GJ28").SpecialCells(xlCellTypeVisible).Copy Worksheets("Brief 1 (GME)").Cells(1, 1)
Sheets("Brief 1 (M)").Range("G1:GJ28").SpecialCells(xlCellTypeVisible).Copy Worksheets("Brief 1 (GME)").Cells(29, 1)
Sheets("Brief 1 (E)").Range("G1:GJ28").SpecialCells(xlCellTypeVisible).Copy Worksheets("Brief 1 (GME)").Cells(57, 1)
On Error GoTo 0
'Seitenumbruch vor Zeilen 29 und 58
Worksheets("Brief 1 (GME)").HPageBreaks.Add Before:=Worksheets("Brief 1 (GME)").Rows(29)
Worksheets("Brief 1 (GME)").HPageBreaks.Add Before:=Worksheets("Brief 1 (GME)").Rows(57)
'Zeilenhöhe durch Unterrprogramm einstellen
Zahl = Sheets("Brief 1 (G)").Range("G1:GJ28").SpecialCells(xlCellTypeVisible).Count
If Zahl > 0 Then Set Brief = Sheets("Brief 1 (G)"): z = 1: GoSub Zeilenhöhe
Zahl = Sheets("Brief 1 (M)").Range("G1:GJ28").SpecialCells(xlCellTypeVisible).Count
If Zahl > 0 Then Set Brief = Sheets("Brief 1 (M)"): z = 29: GoSub Zeilenhöhe
Zahl = Sheets("Brief 1 (E)").Range("G1:GJ28").SpecialCells(xlCellTypeVisible).Count
If Zahl > 0 Then Set Brief = Sheets("Brief 1 (E)"): z = 57: GoSub Zeilenhöhe
Exit Sub 'Makro mit EXIT SUB beenden!!
Zeilenhöhe: 'UNTERPROGRAMM FÜR ZEILENHÖHE
For j = 1 To 29
Worksheets("Brief 1 (GME)").Rows(z).RowHeight = Brief.Rows(j).RowHeight
z = z + 1
Next j
Return
End Sub
Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:1 Nutzer sagt Danke an Gast 123 für diesen Beitrag 28
• so.egal
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Tina,
kopiere einfach die ganze(n) Zeile(n), denn dann wird auch das Format dieser übertragen:
Sheets("Brief 1 (G)").Range("G1:GJ28").SpecialCells(xlCellTypeVisible).EntireRow.Copy Worksheets("Brief 1 (GME)").Cells(1, 1)
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• so.egal
Registriert seit: 12.03.2016
Version(en): Excel 2003
Hallo
wie amüsant, dann war meine 1. Variante alle Zeilen als Row zu kopieren doch richtig. Ich war da im Zweifel ....
mfg Gast 123
Registriert seit: 02.01.2021
Version(en): 2019
12.03.2022, 16:19
(Dieser Beitrag wurde zuletzt bearbeitet: 12.03.2022, 16:25 von so.egal.)
Hat leider nicht geklappt. Es ergab ein Problem mit nem HPageBrake.delete darunter.
Habs mit ner Hilfsspalte gelöst, die ich nach dem Zeilenanpassen einfach ausgeblendet.
Hab auch die anderen Sachen getestet. Aber es hat immer irgendwo gehakt. Kann auch mit Zellverbünden zu tun haben.
Ich danke euch trotzdem vielmals!!!
LG Tina
Registriert seit: 04.11.2014
Version(en): Office 365 Beta
Hi,
Zitat:Kann auch mit Zellverbünden zu tun haben
100%ig.