Olá caros desenvolvedores. Talvez precisemos definir relatórios no MS Excel com quebras específicas de página, os quais, por vezes tenham dados oriundos de um BI (tal como da Microsoft, ORACLE, SAP, ou Cognos).
Insert Conditional Horizontal Page Breaks Around Logical/Visual Blocks
Clear Page Breaks & Add Page Breaks
Conditional Insert Of Page Breaks
Force Page Breaks In Vba?
Inserting Page Breaks On Relative Rows Based On Data
Set Page Breaks Based On Cell Value On Protected Sheet
Macro - Page Breaks/printing
Macro To Save Sheet With Same Page Breaks As Original
Vertical Page Breaks To Stretch From Column "B" To Column "U"
Page Breaks When Value Changes
Remove Any Page Breaks
Filter Out Page Breaks
Setting Page Breaks
Detecting Page Breaks
Macro To Loop And Insert A Page-break
Find Page Breaks Faster
Page Breaks Every Nth Row
Create Conditional Page Breaks
Row Height Specifically For Page Breaks
Adjusting Page Breaks In Multiple Tabs
Inserting Page Breaks For Certain Sheets Using Macros
Set Page Breaks Groups For X Conditions
Two Page Lookup Matching Criteria Based On Cell Value
Show Page Breaks Automatically When I Open A New File.
Deleting Page Breaks From Text File Formatted
Page Breaks Result In Blank Pages Printing When AutoFilter Used
Como podemos forçar as quebras quando acontecerem mudanças nas ocorrências de certos agrupamentos?
O código abaixo foi criado para aderir a uma necessidade específica, mas pode ser [e deve ser,] adaptado a ainda outras necessidades, criem e compartilhem!!!
Imaginem a ocorrência abaixo:
Nome Estado e-mailAndré SP bernardess@gmail.comAndré SP bernardess@gmail.comAndré RJ bernardess@gmail.com
Suponhamos que desejasse que em toda a mudança de estado, uma quebra fosse inserida. Como ficaria? Similar ao demonstrado abaixo:
Segue código:
Sub Insert_PageBreaks()
' Author: Date: Contact: URL:
' André Bernardes 08/07/2011 08:49 bernardess@gmail.com http://al-bernardes.sites.uol.com.br/
' Insere quebra de página de acordo com a mudança em uma coluna.
' Listening: .
Dim Lastrow As Long
Dim i As Long
Dim Row_Index As Long
Dim Column1 As Long
Dim Row1 As Long
Dim cellContent1 As String
Dim cellContent2 As String
' Define a coluna que será analisada.
Let Column1 = 3
' Define a partir de qual Linha iniciará.
Let Row1 = 3
With ActiveSheet
' Remove todos os PageBreaks pré-existentes.
.ResetAllPageBreaks
' Identifica a última linha que contém alguma informação. Neste caso na coluna C.
Let Lastrow = .Cells(Rows.Count, "C").End(xlUp).Row
' Carrega variável de análise.
Let cellContent1 = .Cells(Row1, Column1)
' Percorre todas as linhas com conteúdo na planilha vigente.
For i = Row1 To Lastrow
If Selection(i, Column1).Value <> cellContent1 Then
.HPageBreaks.Add Before:=.Cells(i + 1, Column1)
' Carrega variável de análise.
Let cellContent1 = .Cells(i + 1, Column1)
Let i = i + 1
End If
Next
End With
End Sub
Exemplo #1:
Use HPageBreaks(index), onde index é o número de índice da quebra de página, para retornar um objeto
HPageBreak. O exemplo a seguir altera a posição da quebra de página horizontal um.
Visual Basic for Applications
Worksheets(1).HPageBreaks(1).Location = Worksheets(1).Range("e5")
Exemplo #2:
Este exemplo adiciona uma quebra de página horizontal acima da célula F25 e insere uma quebra de página vertical à esquerda dessa célula.
Visual Basic for Applications
With Worksheets(1)
.HPageBreaks.Add.Range("F25")
.VPageBreaks.Add .Range("F25")
End With
Exemplo #3:
With Worksheets("Sheet3")
Set rngMyRange = .Range(.Range("B1"), .Range("B65536").End(xlUp))
For Each rngCell In rngMyRange
' Faz o loop através do range.
If rngCell.Value <> rngCell.Offset(1, 0).Value Then
.HPageBreaks.Add Before:=rngCell.Offset(1, 0)
End If
Next
End With
Utilize-os com moderação...
Tags: André Luiz Bernardes, Microsoft, Office, Excel, insert, page, brake, column, ResetAllPageBreaks, HPageBreaks, lastrow, row, cells, xlup
E como pode ser feito para que me retorne o número da página? Por exemplo me retorna em qual página esta tal pessoa? ou teste x? Grato.
ResponderExcluirAndré seu código salvou meu sábado, Muito obrigada.
ResponderExcluirGostaria de dizer que a letra do código mínima como está, para uma pessoa míope como eu é desesperador. Se puder melhorar isso por favor, o tamanho da letra assim como o contraste, letra cinza fininha em fundo branco não dá para ser lido...
Desculpe a chatice e mais uma vez obrigada