Hallo,
tja, was soll man sagen ... ohne die Datei zu kennen oder zu sehen, was Du siehst ist es schwierig, Dir zu helfen.
Du beziehst Dich bei Deinem Code sehr oft auf das aktive Blatt, hier sollte man, wenn möglich und bekannt, immer die Blätter konkret ansprechen. Z. B. beim Pdf_Druck. Ich gehe mal davon aus, dass das Blatt "Immo" gedruckt werden soll. Dann würde ich die Prozedur so schreiben:
1 2 3 4 5 | Public Sub Pdf_Druck(Blatt As String )
Dim Dateiname As String
Dateiname = Sheets(Blatt).Range( "H47" ) & Sheets(Blatt).Range( "H49" ) & ".pdf"
Sheets(Blatt).Range( "C1:BJ34" ).ExportAsFixedFormat Type:=xlTypePDF, Filename:=Dateiname, Quality:=xlQualityStandard, IncludeDocProperties:= True , IgnorePrintAreas:= False , OpenAfterPublish:= False
End Sub
|
Der Aufruf erfolgt dann so:
Im Prinzip solltest Du alle Bereiche, auf die Du zugreifst korrekt referenzieren.
Das hier:
1 2 3 4 5 6 7 8 9 | Sheets(BlattKrit).Cells(ZeileVerteilung, SpalteVerteiler). Select
Application.CutCopyMode = False
Selection.Copy
Sheets(BlattDruck).Cells(ZeileKrit, SpalteKrit). Select
ActiveSheet.PasteSpecial Paste:=xlPasteValues
|
könnte man auch kürzer und konkreter formulieren:
1 2 | Sheets(BlattKrit).Cells(ZeileVerteilung, SpalteVerteiler).Copy
Sheets(BlattDruck).Cells(ZeileKrit, SpalteKrit).PasteSpecial Paste:=xlPasteValues
|
Da Du allerdings nur Werte kopierst, wäre es noch sinnvoller ohne Copy zu arbeiten:
1 | Sheets(BlattDruck).Cells(ZeileKrit, SpalteKrit).Value = Sheets(BlattKrit).Cells(ZeileVerteilung, SpalteVerteiler).Value
|
Da brauchst Du auch nicht auf das andere Blatt wechseln ...
Zum Thema "letze Zeile" sei Dir diese Seite ans Herz gelegt:
https://www.excel-inside.de/vba-loesungen/zellen-a-bereiche/337-letzte-zeile-letzte-spalte-und-letzte-zelle-per-vba-ermitteln
Grüße
Michael
|