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 specialcells. Mostrar todas as postagens
Mostrando postagens com marcador specialcells. 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

VBA Excel - Delete as Linhas que não estiverem com a palavra indicada - Delete Rows Without Specific Word


Termo de Responsabilidade

Este código exclui todas as linhas onde a palavra especificada não aparecer. O código procurará casos em que toda a célula for igual à palavra(s) indicada. Como o código usa o método SpecialCells, é extremamente rápido - muito mais rápido do que ciclos através de um intervalo de células.

Sub DeleteRowsWithoutWord()
Dim Col As Variant, Word As String, LastRow As Long

Let Col = InputBox("Qual é a coluna na qual buscarei a palavra para deleção?")

If Len(Col) > 0 And Not Col Like "*[!0-9]*" Then Col = Val(Col)

Let Word = InputBox("Que palavra deve estar nas linhas que não apagarei?")
Let LastRow = Cells(Rows.Count, Col).End(xlUp).Row

On Error Resume Next

With Range(Cells(1, Col), Cells(LastRow, Col))
    .Replace Word, "#N/A", xlWhole
    .SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    .SpecialCells(xlCellTypeConstants, xlLogical + xlNumbers + xlTextValues).EntireRow.Delete
    Let .SpecialCells(xlCellTypeConstants, xlErrors).Value = Word
End With
End Sub

References:

Tags: VBA, Excel, excluir, delete, row, line, specialcells, range,  



VBA Excel - Excluir linhas com determinada palavra - Delete Row With Specific Word


Termo de Responsabilidade






Aqui está um código para o MS Excel que irá excluir todas as linhas que contenham a palavra especificada na coluna que configurá-lo para pesquisar. 

O código procurará casos em que o conteúdo da célula esteja igual à palavra. Como o código usa o método SpecialCells, é extremamente rápido - muito mais rápido do que um ciclo através de um Range de células.

Sub DeleteRowsWithWord()
Dim Col As Variant, Word As String

Let Col = InputBox("Em qual coluna devo manter o foco da busca da palavra?")

If Len(Col) > 0 And Not Col Like "*[!0-9]*" Then Col = Val(Col)

Let Word = InputBox("Que palavra devo encontrar nas Linhas para apagá-las?")

With Columns(Col)
   .Replace Word, "#N/A", xlWhole
   .SpecialCells(xlCellTypeConstants, xlErrors).EntireRow.Delete
End With
End Sub

Este código pode ser usado mesmo que existam células vazias no intervalo pesquisado. 


References:

Tags: VBA, Excel, excluir, delete, row, line, specialcells, range,  



diHITT - Notícias