2016-11-17 74 views
0

我自動在Excel中使用宏來填充Excel。所得紙張看起來可能像下面這樣:VBA:僅在特定行後分頁符

|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------| 

當我打印此列表,分頁符是隨機生成,並可能通過切條(即名稱和價格第1頁第2頁上的文字)。

如何告訴宏只在包含「產品文本」的行後面允許分頁符。不幸的是,我不能告訴他每x行都這樣做,因爲由於分組行,步驟並不總是相同的。

感謝

+0

保持'|產品文字------ |'因爲只有第一行(擦除所有其他事件),然後設置「頁面佈局 - >表 - >行在頂部重複「選擇第一行 – user3598756

回答

0

粘貼「產品文本」塊後,檢查你是哪一行,並將其分配給變量TarRow。然後用這個:

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

我假設你是在表1和有一個循環,所以如果你在你的循環插入此,它會制定出對所有產品?

對於未來,請記住,最好給出一個例子以便我們看到代碼。

+0

感謝您的反饋意見。每個產品之後都不會添加換行符?我希望分頁符是動態的(即每當需要填充頁面時),但是限制只會出現在詳細信息行 – Berbatov

+0

之後,因爲在Excel中,「當它們需要時」本身就是動態的。也許你可以指定一些緩衝區,並說「在看到詳細信息行後,你可以插入10行的分頁符」? –

0

試試這個:

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