2016-11-17 26 views
0

Ich beziehe automatisch ein Excel mit einem Makro in Excel. Das resultierende Blatt könnte wie folgt aussehen:VBA: Seitenumbruch nur nach bestimmten Zeilen

|1. TOYS-----------| 

|LEGO--------------| 

|Product 1|199,99--| 

|Product Text------| 

|Product 2|299,99--| 

|Product Text------| 

|MARVEL------------| 

|Product 3|79,99---| 

|Product Text------| 

|2. FOOD-----------| 

|Vegetables--------| 

|Product 4|9,99----| 

|Product Text------| 

|Product 5|2,99----| 

|Product Text------| 

Wenn ich diese Liste zu drucken, werden die Seitenumbrüche erstellt zufällig und könnte einen Artikel durchschneiden (das heißt Name und Preis auf Seite 1, Text auf Seite 2).

Wie kann ich dem Makro sagen, nur Seitenumbrüche nach der Zeile zuzulassen, die "Produkttext" enthält. Leider kann ich ihm nicht sagen, dass er es alle x Zeilen machen soll, da die Schritte aufgrund der Gruppierungszeilen nicht immer gleich sind.

Dank

+0

keep '| Produkt Text ------ |' als die erste Zeile nur (alle anderen Ereignisse löschen) und dann „Seitenlayout -> Sheet -> Zeile wiederhole oben "wähle erste Zeile – user3598756

Antwort

0

Nach dem „Produkttext“ Block einfügen, prüfen Sie, welche Zeile Sie sind, und weisen Sie Variable TarRow zu. Dann folgt verwenden:

Worksheets("Sheet1").Rows(TarRow).PageBreak = xlPageBreakManual

Ich nehme an, Sie auf Blatt 1 sind und haben eine Schleife so, wenn Sie dies in Ihrer Schleife einzufügen, es für alle Produkte funktionieren wird?

Für die Zukunft, denken Sie daran, dass es immer besser ist, ein Beispiel zu geben, damit wir den Code sehen können.

+0

Danke für die Rückmeldung. Würde das nicht nach jedem Produkt einen Zeilenumbruch hinzufügen? Ich möchte, dass die Seitenumbrüche dynamisch sind (dh wann immer sie benötigt werden, um die Seite zu füllen), aber mit der Einschränkung, nur nach den Detailzeilen – Berbatov

+0

viel härter zu erscheinen ... weil in Excel "wenn sie benötigt werden" selbst dynamisch ist . Vielleicht könnten Sie einen Puffer angeben und sagen: "Nachdem Sie die Detailzeile gesehen haben, können Sie einen Seitenumbruch für 10 Zeilen einfügen"? –

0

Try this:

Sub add_HPBreak() 

Dim HPBreak As HPageBreak 
Dim i As Long, lastrow As Long 


'set your last row as required 
lastrow = ActiveSheet.Rows.Count + 1 
ActiveWindow.View = xlPageBreakPreview 

For i = 1 To lastrow 

     For Each HPBreak In ActiveSheet.HPageBreaks 
     'assuming product text string is in column 1 
     If InStr(ActiveSheet.Cells(i, 1).Value, "product text") > 0 Then 
      ActiveSheet.Cells(i, 1).EntireRow.Select 
      ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell 

     End If 

    Next 

Next 

ActiveWindow.View = xlNormalView 


End Sub 
Verwandte Themen