Propósito

✔ Programação GLOBAL® - Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog devem ser tratados como consultoria freelance. Queiram contatar-nos: brazilsalesforceeffectiveness@gmail.com | ESTE BLOG NÃO SE RESPONSABILIZA POR QUAISQUER DANOS PROVENIENTES DO USO DOS CÓDIGOS AQUI POSTADOS EM APLICAÇÕES PESSOAIS OU DE TERCEIROS.

VBA Excel - Inserindo quebra de páginas de acordo com o agrupamento

VBA Excel - Inserindo quebra de páginas de acordo com o agrupamento








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-mail
André           SP                              bernardess@gmail.com
André           SP                              bernardess@gmail.com
André           SP                              bernardess@gmail.com
André           SP                              bernardess@gmail.com
André           SP                              bernardess@gmail.com
André           SP                              bernardess@gmail.com
André           RJ                              bernardess@gmail.com

André           PR                              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


Outras Referências: 1ªs Referências
                             2ªs Referências


Comente e compartilhe este artigo!

brazilsalesforceeffectiveness@gmail.com

VBA ACCESS - ShowToolbar - Inibindo o Menu - Switch off / Hide Toolbars & Menu Bar

VBA ACCESS - ShowToolbar - Inibindo o Menu - Switch off / Hide Toolbars & Menu Bar
#ProgramaçãoGlobal #Access #MSAccess #access #vba #accessvba #menubar #toolbars #indústrifarmacêutica #dadosinternos #automação #relatórios #dashboards #segurançadedados


DOE UM CAFÉ


 Compre OS LIVROS DESTA SÉRIE 




Você gosta de proteger bem as suas aplicações para que 'fuçadores' não fiquem bisbilhotando o que você desenvolveu?

Particularmente nunca tive muito receio quanto aos usuários que operam as aplicações que desenvolvo. Sempre faço questão de treinar os usuários quanto as suas responsabilidades, e sobre o que nunca devem fazer, como:

Pressionar o [CTRL] + [Scroll Lock]

Pressionar o [SHIFT] antes da aplicação carregar, e assim por diante. 

Por que faço questão de treinar antes? Para evitar problemas causados por eles mesmos. Alguns têm um conhecimento razoável sobre 'macros' e acreditam que isso os habilita a alterarem os códigos e/ou a bisbilhotá-los.

CRIO DASHBOARDS NO POWER BI


Entendamos que a curiosidade é inata ao ser humano, mas esta pode trazer danos à aplicação, bem como ao processo ao qual esta presta suporte. E nestes casos o usuário será responsabilizado diretamente.

Você que desenvolve como eu, sabe que a grande maioria dos usuários que criam 'macros' apenas o fazem para facilitar o seu dia-a-dia. Não dominam a teoria, sequer imaginam o que é OOP, Eventos, Objetos, Classes, etc...Isso afasta-os da compreensão dos nossos códigos quando deparam-se com eles.

Esta longa introdução serve apenas para apresentar uma possivel necessidade de desabilitar os menus de todas as aplicações MS Access que desenvolvemos. Isso, de certo modo, impedirá que 80% ou mais dos seus usuários causem problemas a eles mesmos. Como fazer isso?

DoCmd.Método ShowToolbar

 

O método ShowToolbar executa a ação ShowToolbar no Visual Basic for Applications.

Sintaxe:

expressão.ShowToolbar(ToolbarName, Show)
expressão   Uma variável que representa um objeto DoCmd.

Parâmetros:

ToolbarName - É obrigatório, sendo do tipo Variant. Uma expressão de cadeia de caracteres (expressão de seqüência de caracteres: uma expressão avaliada como uma seqüência de caracteres contíguos. Os elementos da expressão podem incluir: funções que retornam uma seqüência ou uma seqüência Variant (VarType 8); uma seqüência literal, constante, variável ou Variant.) que é o nome válido de uma barra de ferramentas personalizada (barra de ferramentas personalizada: uma barra de ferramentas que você cria para seu aplicativo. Por outro lado, uma barra de ferramentas interna é instalada com o Access em seu computador.) do Microsoft Access que você criou. Se você executar o código do Visual Basic que contém o método ShowToolbar em um banco de dados biblioteca (banco de dados biblioteca: uma coleção de procedimentos e objetos de banco de dados que podem ser chamados de qualquer aplicativo. Para usar os itens na biblioteca, é necessário estabelecer primeiro uma referência do banco de dados atual ao banco de dados da biblioteca.), o Microsoft Access procurará pela barra de ferramentas com esse nome primeiro no banco de dados biblioteca e, em seguida no banco de dados atual.

Show - É opcional, sendo do tipo 'AcShowToolbar'. Uma constante AcShowToolbar que especifica se será necessário exibir ou ocultar a barra de ferramentas e em qual modo de exibição exibi-la ou ocultá-la. O valor padrão é acToolbarYes.

É possível usar o método ShowToolbar para exibir ou ocultar uma barra de ferramentas personalizada. 

Se você deseja mostrar uma barra de ferramentas específica em apenas um formulário ou relatório, defina a propriedade OnActivate do formulário ou do relatório para o mesmo nome de uma macro que contém uma ação ShowToolbar para mostrar a barra de ferramentas. Depois defina a propriedade OnDeactivate do formulário ou do relatório do nome de uma macro que contenha a ação ShowToolbar para ocultar a barra de ferramentas.

Enumeração AcShowToolbar:

 

Usada com o método ShowToolbar para especificar se uma determinada barra de ferramentas personalizada deve ser exibida.

acToolbarNo - Correspondo ao valor 2 e oculta a barra de ferramentas.

 

acToolbarWhereApprop - Corresponde ao valor 1 e exibe a barra de ferramentas quando no modo de exibição apropriado.

acToolbarYes - Corresponde ao valor 0 e exibe a barra de ferramentas. 

Exemplo:

' Desativa o aparecimento.
DoCmd.ShowToolbar "Ribbon", acToolbarNo

' Ativa o aparecimento.
DoCmd.ShowToolbar "Ribbon", acToolbarYes

👉 Siga André Bernardes no LinkedinClique aqui e contate-me via What's App.

Comente e compartilhe este artigo!

brazilsalesforceeffectiveness@gmail.com


diHITT - Notícias