Hallo
ich verstehe den ganzen Aufwand mit Seitenumbruch festlegen nicht.
Den Druckbereich festlegen geht doch viel einfacher, mit einem simplen Makro.
Die Artikelnummer kann man per InputBox ermitteln, oder aus einer Zelle laden!
Mein Suchlauf ist in Spalte "C", muss zusammen mit After:=[c1] angepasst werden.
Als Anf-Adresse habe ich "A", ggf ändern! Und die Endspalte muss eingefügt werden.
Damit sollte die Zuweisung des Print Bereich klappen.
Alternativ könnte man in jeder Leerzeile einen Gruppen Namen angeben. Nach Gruppe suchen.
Das erfordert aber 3000 Namen von Hand in die Tabelle eintragen! Viiiiel Arbeit!!
Für den Fall gibt es den zweiten Code, der ist einfacher weil KEINE Adress Korrektur nötig!
mfg Gast 123
Code:
Sub GruppenBereich_festlegen()
Dim rFind As Range, AnfAdr, EndAdr
Dim Eingabe As Variant
Eingabe = InputBox("Bitte Artikel Nummer eingeben")
If Eingabe = Empty Then Exit Sub
Set rFind = Columns("C").Find(What:=Eingabe, After:=[c1], LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
If Not rFind Is Nothing Then
'Anf-Adresse und End-Adresse über xlUp + xlDown
AnfAdr = Cells(rFind.Row, "A").End(xlUp).Address
EndAdr = Cells(rFind.Row, "xx").End(xlDown).Address
'Adress Korrektur wenn oben/unten Leerzeile ist
If rFind.Offset(-1, 0) = Empty Then _
AnfAdr = Cells(rFind.Row, "A").Address
If rFind.Offset(1, 0) = Empty Then _
EndAdr = Cells(rFind.Row, "xx").Address
'ActiveSheet PrintArea festlegen
ActiveSheet.PageSetup.PrintArea = Range(AnfAdr, EndAdr)
End If
End Sub
Code:
Sub GruppenBereich_suchen()
Dim rFind As Range, AnfAdr, EndAdr
Dim Eingabe As Variant
Eingabe = InputBox("Bitte Artikel Nummer eingeben")
If Eingabe = Empty Then Exit Sub
Set rFind = Columns("C").Find(What:=Eingabe, After:=[c1], LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
If Not rFind Is Nothing Then
'Anf-Adresse über Offset(1) und End-Adresse über xlDown
AnfAdr = Cells(rFind.Row, "A").Offset(1, 0).Address
EndAdr = Cells(rFind.Row, "xx").End(xlDown).Address
'ActiveSheet PrintArea festlegen
ActiveSheet.PageSetup.PrintArea = Range(AnfAdr, EndAdr)
End If
End Sub
Nachtrag
VOR dem festlegen des PrintBereich gehört noch diese Codezeile, um den alten PrintBereich zu löschen!
ActiveSheet.PageSetup.PrintArea = Empty