Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA beim Kopieren auch die Zeilenhöhen mit übernehmen
#1
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
Antworten Top
#2
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
Antworten Top
#3
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:
  • so.egal
Antworten Top
#4
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:
  • so.egal
Antworten Top
#5
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
Antworten Top
#6
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
Antworten Top
#7
Hi,

Zitat:Kann auch mit Zellverbünden zu tun haben

100%ig.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste