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 - Função Format e exemplos















Eu sei, eu sei, isso é superfácil todo mundo sabe, não precisa ser um post. Mas a verdade indica que muita gente ainda não domina a utilização da função Format. Esta retorna uma Variant (String) que contém uma expressão formatada segundo instruções contidas em uma expressão de formato: Sintaxe:


 Format (expression[, format[, firstdayofweek[, firstweekofyear]]])


Expression - Obrigatória. Qualquer expressão válida.

Format - Opcional. Uma expressão de formato válida nomeada ou definida pelo usuário.

Firstdayofweek - Opcional. Uma constante que especifica o primeiro dia da semana.

firstweekofyear - Opcional. Uma constante que especifica a primeira semana do ano.

O argumento firstdayofweek tem as seguintes configurações:



CONSTANTE      VALOR    DESCRIÇÃO
vbUseSystem        0             Use a configuração NLS API.
VbSunday            1             Domingo (padrão)
vbMonday            2             Segunda-feira
vbTuesday           3             Terça-feira
vbWednesday      4              Quarta-feira
vbThursday          5              Quinta-feira
vbFriday               6             Sexta-feira
vbSaturday          7              Sábado



O argumento firstweekofyear tem as seguintes configurações:


CONSTANTE    VAL  DESCRIÇÃO
vbUseSystem      0  Use a configuração NLS API.
vbFirstJan1         1  Inicie com a semana na qual ocorre o dia 1º de janeiro (padrão).
vbFirstFourDays   2  Inicie com a primeira semana que tem pelo menos 4 dias no ano.
vbFirstFullWeek   3  Inicie com a primeira semana completa do ano.




Estes exemplos mostram os diversos usos da função Format para formatar valores, usando formatos nomeados e formatos definidos pelo usuário. Para o separador de data (/), separador de hora (:) e literal AM/ PM, o resultado real formatado, exibido pelo sistema, dependerá das configurações da localidade em que o código estiver executado. Ao exibir datas e horas no ambiente de desenvolvimento, serão usados os formatos de hora e data abreviados da localidade do código. Quando exibidas pelo código em execução, serão usados os formatos de hora e data abreviados da localidade do sistema, que podem ser diferentes da localidade do código. No exemplo abaixo, considera-se o inglês dos EUA.


MyTime e MyDate serão exibidas no ambiente de desenvolvimento, usando as configurações de hora e data abreviadas do sistema atual.

Exemplos
Dim MyTime, MyDate, MyStr
Let MyTime = #17:04:23#
Let MyTime = #17:04:23#
Let MyTime = #17:04:23#

' Retorna a hora atual do sistema no formato longo de hora definido pelo sistema.
Let MyDate = #Februry 05, 2010#


 ' Retorna a hora atual do sistema no formato longo de hora definido pelo sistema.
 Let MyStr = Format (Time, "Hora longa")

  ' Retorna a data do sistema atual no formato longo de data definido pelo sistema.
 Let MyStr = Format (Date, "Data longa") Let MyStr = Format (MyTime, "h:m:s")                     ' Retorna "17:4:23". Let MyStr = Format (MyTime, "hh:mm:ss AMPM")    ' Retorna "05:04:23 PM". Let MyStr = Format (MyDate, "dddd, mmm d yyyy")  ' Retorna "Quarta-feira,
  Jan 27 1993".

Se o formato não for especificado, retornará uma seqüência de caracteresLet MyStr = Format (23)    ' Retorna "23". 

Formatos definidos pelo usuário.Let MyStr = Format (5459.4, "##,##0.00")    ' Retorna "5.459,40". Let MyStr = Format (334.9, "###0.00")    ' Retorna "334,90". Let MyStr = Format (5, "0.00%")    ' Retorna "500,00%". Let MyStr = Format ("OLÁ", "<")    ' Retorna "olá". Let MyStr = Format ("Isto é tudo", ">")    ' Retorna "ISTO É TUDO".
 
Tags: Format,
Inspiration: 

VBA Excel - Imprimindo planilhas selecionadas ou não.


excel-header.jpg

Olá pessoal!

Nossas planilhas, e neste caso refiro-me as inúmeras 'sheets' ou pastas dentro de uma única planilha (workbook). Com o passar do tempo, se não tomarmos cuidado, acabam sendo compostas por diversas interfaces diferentes. Algumas com visões consolidadas e outras detalhadas (drilldown).

Independentemente de quão amplo sejam os nossos workbooks, invariavelmente precisaremos imprimir o seu conteúdo, geralmente representados por Dashboards & Scorecards, ou Cockpits

Os três exemplos abaixo visam permitir que possa dar diversas opções de impressão aos seus usuários, e obviamente a você mesmo.

1º EXEMPLO

Este código imprime as todas as planilhas selecionadas, veja o código do procedimento inPrintSelectedsSheets mostrado abaixo.



Sub inPrintSelectedSheets (Preview As Boolean)
    Dim N As Long
    Dim M As Long
    Dim Arr() As String
    
    With ActiveWindow.SelectedSheets
        ReDim Arr(1 To .Count)

        For N = 1 To .Count
            Let Arr(N) = .Item(N).Name
        Next N

    End With

    Sheets(Arr).PrintOut Preview:=True
End Sub

2º EXEMPLO
Já este código a seguir imprime apenas as planilhas não selecionadas através do procedimento inPrintUnSelectedSheets:


Sub inPrintUnselectedSheets (Preview As Boolean)

    Dim WS As Object

    Dim N As Long

    Dim Arr() As String

    Dim K As Long

    Dim B As Boolean

    

    ReDim Arr(1 To ActiveWorkbook.Sheets.Count)


    For Each WS In ActiveWorkbook.Sheets

        Let B = True


        With ActiveWindow.SelectedSheets


        For N = 1 To .Count

            Let B = True


            If StrComp(WS.Name, .Item(N).Name, vbTextCompare) = 0 Then

                Let B = False


                Exit For

            End If


        Next N


        If B = True Then

            Let K = K + 1

            Let Arr(K) = WS.Name

        End If


        End With

    Next WS


    If K > 0 Then

        ReDim Preserve Arr(1 To K)

        ActiveWorkbook.Sheets(Arr).PrintOut Preview:=Preview

    End If

End Sub


3º EXEMPLO
O código a seguir exclue as planilhas informadas na seleção, imprimindo todas as demais com o procedimento inPrintSheetsExclude. Use assim: inPrintSheetsExclude false, "Sheet2", "Sheet4", "Sheet6". Perceba que todas as sheets serão impressas, excetuando-se as sheets: Sheet2, Sheet4, e Sheet6, veja o código:



Sub inPrintSheetsExclude (Preview As Boolean, ParamArray Excludes() As Variant)


    Dim Arr() As String

    Dim B As Boolean

    Dim N As Long

    Dim M As Long

    Dim K As Long

    

    ReDim Arr(1 To Sheets.Count)


    For N = 1 To Sheets.Count

        Let B = True


        For M = LBound(Excludes) To UBound(Excludes)


            If StrComp(Sheets(N).Name, Excludes(M), vbTextCompare) = 0 Then

                Let B = False


                Exit For

            End If


        Next M


        If B = True Then

            Let K = K + 1

            Let Arr(K) = Sheets(N).Name

        End If


    Next N


    If K > 0 Then

        ReDim Preserve Arr(1 To K)


        Sheets(Arr).PrintOut Preview:=Preview

    End If


End Sub


Fonte: C Person




Tags: Bernardes, Microsoft, MOS, MS, Office, Office 2007, Office 2010, automation, automação, print, various print, simultaneously print, multi print


André Luiz Bernardes
A&A® - Work smart, not hard.

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
diHITT - Notícias