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.

.: Vitrine

Carregando artigos...

Views

Mostrando postagens com marcador loop. Mostrar todas as postagens
Mostrando postagens com marcador loop. Mostrar todas as postagens

Truques VBA Raramente Usados - Não Seja Pego no Loop

Truques VBA Raramente Usados - Não Seja Pego no Loop




Sei que pode parecer redundância, mas pense sempre fora da caixa. Mesmo que, para isso, precise abrir mão de usar o VBA. Nós programadores precisamos utilizar as melhores soluções entre os 2 mundos e isso, às vezes, na verdade muitas vezes, significará utilizarmos aquilo que já existe pronto no próprio MS Excel.

Não seja pego na Loop: 

Francamente, tento correr de usar Loops. Geralmente são demasiadamente lentoooosss!

Um erro comum que todos cometemos ao aprender VBA é o de usar Loops quando realmente não são necessários. Observe este exemplo simples logo abaixo, onde a proposta é colocarmos a palavra vazio escrita em cada célula que estiver em branco.

Sub EahhWrongWay ()
Dim Bcell Como Gama

Para Cada Bcell Em Range ("A1: D500")

Se IsEmpty (Bcell) Então Bcell = "vazio"

Próximo Bcell
End Sub

Agora compare com o código abaixo:

Sub OhhEahhRightWay ()
Range ( "A1: D500"). SpecialCells (xlCellTypeBlanks) = "vazio"
End Sub


Muito Melhor!

Este código não somente é melhor como muito mais fácil de escrever e muito mais rápido. 

Da próxima vez que precisar de algo assim, não se apresse com um Loop. Dê um passo para atrás e pense seriamente em utilizar as funções construídas em C# dentro do próprio MS Excel. Algumas das minhas favoritas são: SpecialCells, AutoFilter, Find, AdvancedFilter e Subtotals, para citar apenas algumas. Quando começar a usá-las, sempre pensará duas vezes antes de usar de qualquer jeito um loop


Posso prometer-lhe que utilizar estes recursos quase sempre significará ter sua solução sendo executada pelo menos 100 vezes mais rápida do que num Loop! 


brazilsalesforceeffectiveness@gmail.com

✔ Brazil SFE®Author´s Profile  Google+   Author´s Professional Profile   Pinterest   Author´s Tweets

SANDWICH PROJECT 2016 - VBA Excel: Efetuando loop no intervalo nomeado

SANDWICH PROJECT 2016 - VBA Excel: Efetuando loops no intervalo nomeado



Não raro nomeamos um intervalo, range, de dados para a manipulação mais precisa. Também podemos fazê-lo para cuidar de certos aspectos da formatação.

Abaixo temos um código que faz um loop através de cada célula de um intervalo nomeado usando um loop For Each...Next. Se o valor de qualquer célula no intervalo exceder o valor de limit, a cor da célula será alterada para amarelo.

Este código é muito funcional e prático para montar semáforos em uma planilha de dados que aponta resultados.

Sub ApplyColor()

    Const Limit As Integer = 25

    For Each c In Range("MyRange")

        If c.Value > Limit Then
            Let c.Interior.ColorIndex = 27
        End If

    Next c

End Sub


Ei! Envie seus comentários e sugestões de artigos. Compartilhe este artigo com seus chefes, colegas de trabalho e amigos.
 

VBA Excel - Função DIR - 01 - Percorrer os arquivos em uma pasta - Loop Through the Files in a Folder


No VBA do Microsoft Excel, a função Dir é usada para retornar o primeiro nome do arquivo num diretório especificado, e uma lista dos seus atributos.

O nome do arquivo é retornado como uma String. A função Dir pode ser usada sem os respectivos argumentos para retornar o nome do próximo arquivo, neste mesmo diretório.

O uso mais comum da função Dir é percorrer todos os arquivos de uma pasta, executando uma ação em cada um. Outros usos comuns incluem a verificação da existência destes, saber se um diretório existe, ou procurar um arquivo específico.


Percorrer os arquivos em uma pasta

Sub AllFiles()

Dim MyFolder As String 'Path containing the files for looping
Dim MyFile As String 'Filename obtained by Dir function
Let MyFolder = "C:\ExcelFiles" 'Assign directory to MyFolder variable

Let MyFile = Dir (MyFolder) 'Dir gets the first file of the folder

'Loop through all files until Dir cannot find anymore
Do While MyFile <> ""

    The statements you want to run on each file
   
    Let MyFile = Dir 'Dir gets the next file in the folder

Loop

End Sub



brazilsalesforceeffectiveness@gmail.com

✔ Brazil SFE®Author´s Profile  Google+   Author´s Professional Profile   Pinterest   Author´s Tweets

VBA Excel - Looping através das Abas com o AutoFiltro - Loop through sheets and filter

 Sub Filter_All_Sheets()
    Dim WS As Object

    For Each WS In Worksheets

        With WS.Range("A1")
            .AutoFilter
            .Sort Key1:=WS.Range("A1"), Order1:=xlAscending, Header:= _
                  xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
                  DataOption1:=xlSortNormal
        End With

    Next WS
    
End Sub

Tags: Excel, VBA, Loop, Sheets, sheet, Looping, Abas, Filtro, filter, autofilter, 


Inline image 1

VBA Excel - Recupere um Valor a partir de uma Fórmula em cada Aba - Get a value from a formula in each sheet

Sub FindFormulaSheets()

    Dim sh As Worksheet
    Dim f As Range
    Dim s
    
    Worksheets("Total").Range("A2:B100").ClearContents

    Application.ScreenUpdating = False
    Let s = "=SUM(D2:D6)"

    For Each sh In ActiveWorkbook.Worksheets
        If sh.Name <> ("Total") Then
            Set f = sh.Cells.Find(s, LookIn:=xlFormulas)
            If Not f Is Nothing Then
             Range("A65536").End(xlUp).Offset(1, 0) = sh.Name
                Worksheets("Total").Range("A65536").End(xlUp).Offset(0, 1) = Format(f, "h:mm;@")
                Let Application.ScreenUpdating = True
            End If
        End If
    Next sh

    Worksheets("Total").Activate

End Sub


Tags: Excel, VBA, Loop, Sheets, recupere, valor, fórmula, Aba, get, value, ,formula, sheet, 


Inline image 1

VBA Excel - Obtenha o valor de um Range fazendo Looping entre as Abas - Loop Through Sheets and get Value from a range

Sub LoopThroughSheetsGetValue()

    Dim ws As Worksheet
    Worksheets("Total").Range("A2:B100").ClearContents

    For Each ws In ActiveWorkbook.Worksheets
        If ws.Name <> ("Total") Then

            If ws.Visible = True Then
                Let Range("A65536").End(xlUp).Offset(1, 0) = ws.Name
                Let Range("A65536").End(xlUp).Offset(0, 1) = _
                Format(ws.Range("D8"), "h:mm;@")    'Tota da Horas

            End If
        End If
    Next ws
    
End Sub

Tags: Excel, VBA, Loop, Sheets, get, range, value, 


Inline image 1

VBA Excel - Procurando um valor na Coluna A com Looping - Find a Value in Column A using a loop

Sub FindValue()

'This example Loops through Column"A", and searches for
'a value selected from the input box and diplays the address with a MsgBox

    Dim r As Range
    Dim c As Range
    Dim s As String
    Dim ms As String

    Set r = Range("A1", Range("A65536").End(xlUp))

    Let ms = "The Value was found at  "
    Let s = InputBox("Enter Value to Find", "Hello", "Enter Number Here")

    For Each c In r.Cells
        If c = s Then MsgBox ms & c.Address
    Next c

End Sub

Tags: Excel, VBA, Find, Value, Column, loop, Range.  



Inline image 1

VBA Excel - Ajuste o layout de diversas planilhas - Loop through all worksheets in all Excel workbooks in a folder to change the font, font size, and alignment of text in all cells



Gosto muito de automatizar os processos que envolvem a repetição e o retrabalho humano. Isso poupa muito tempo e dinheiro. Gastar tempo automatizando um processo é algo realmente recompensador.

Ao gerarmos diversos relatórios em planilhas diferentes (workbook) do MS Excel, não queremos perder tempo formatando-as durante a geração e processamento de tais dados. Mas podemos programar para que sejam minimamente formatadas depois que tudo terminar e todos os arquivos estiverem gravados em uma pasta do nosso servidor ou estação de trabalho. Como?

Sub FormatLayoutFiles()
    Const fPath As String = "D:\Bernardes\Docs\"

    Dim sh As Worksheet
    Dim sName As String

    With Application
        Let .Calculation = xlCalculationManual
        Let .EnableEvents = False
        Let .ScreenUpdating = False
    End With

    Let sName = Dir(fPath & "*.xls*")

    Do Until sName = ""
        With GetObject(fPath & sName)
            For Each sh In .Worksheets
                With sh
                    Let .Cells.HorizontalAlignment = xlLeft
                    Let .Cells.Font.Name = "Arial"
                    Let .Cells.Font.Size = 10
                End With
            Next sh
            .Close True
        End With

        Let sName = Dir
    Loop

    With Application
        Let .Calculation = xlAutomatic
        Let .EnableEvents = True
        Let .ScreenUpdating = True
    End With
End Sub


Tags: Excel, VBA, format, layout, fomatação, Loop, worksheets, workbooks, folder,change, font, font size, alignment, text, cells


diHITT - Notícias