Arquivo

Posts Tagged ‘Linhas’

Dicas de autofiltro no vba

Pensei neste artigo:”Dicas de autofiltro no vba”, pois a maioria apenas conhece o uso, muito interessante, nas planilhas. Mas e nos códigos?
Neste primeiro momento não quero descrever o porque e quando usar, mas qual a importância ou o cuidado de desativar os autos filtros nos códigos VBA?

imagem dicas de autofiltro no vba

Problema ou Solução “autofiltro”

Dependendo do código, ainda mais se envolver cópia, o autofiltro vai influenciar muito. Em outros casos talvez não influencie, mas pensando no seu usuário final talvez seja melhor deixar a planilha sem filtros para evitar equívocos de interpretação de dados.

 

Benefícios autofiltro no vba

Além do uso clássico que por sinal ajuda muito, podemos também usufruir do autofiltro para “pesquisar” e selecionar itens em uma lista, ao invés de verificar item por item.

 

imagem vamos aos codigos vba

Desabilitar o auto-filtro faça:

Sub FILTRAR_E_DESABALITAR()
  Rows(4).AutoFilter
  ActiveSheet.AutoFilterMode = False
End Sub

Dicas de autofiltro no vba -> Algumas formas de filtrar:

Por uma palavra chave:
Neste exemplo a tabela de cidades será filtrada pela palavra “PALMAS” na coluna 2

'FILTRAR CAMPO 2 PELO CRITERIO "PALMAS"
Range("a4").AutoFilter Field:=2, Criteria1:="Palmas"

Exemplo para limpar todos os filtros utilizados em uma tabela:

'LIMPAR TODOS OS FILTROS
ActiveSheet.ShowAllData

Código vba demonstrando múltiplos autofiltros:

'MULTILPLOS FILTROS
Range("a4").AutoFilter Field:=2, _
Criteria1:=Array("São Paulo", "Manaus"), _
Operator:=xlFilterValues

 

Segue Vídeo:

Range, Cells e Offset

Antes de iniciarmos a falar sobre Range, Cells e Offset vamos fazer uma revisão rápida das maneiras de utilizar células.

Podemos tanto utilizar o Range como o Cells, ou seja selecionar a célula “A2” pode ser:

Cells(1,2).select (linha 1 e coluna 2)
Ou
Range(“A2”).select

Você pode usar das duas formas para selecionar (.select) ou para pegar o valor da célula (.value), mas existe alguns detalhes que só é possível ora com a primeira forma ora com a segunda forma.

Exemplos:
É fácil selecionar um grupo de células com o range: Range(“A1:B2”).select
Com o cells podemos selecionar todas as células da planilha: Cells.Select
Ou apagar o conteúdo das células Cells.ClearContents

Entretanto algumas vezes nos deparamos com uma situação que nos exige copiar algum dado abaixo ou ao redor da célula selecionada!!!

Antes de prosseguirmos vamos colocar um exemplo para facilitar. Sempre que alguém clicar em uma célula, desejamos que o valor dessa célula seja copiado para célula à direita.

exemplo_uso_offset
Um caminho mais tortuoso é saber a coluna ativa e a linha ativa, e a partir disso (como sabemos a coluna) adicionar + 1 e colar o valor da célula atual

linha = activeCell.row

coluna = activeCell.column

Cells(linha, coluna + 1).Value = Cells(linha, coluna).Value

_________________________________________________________

Offset
Mas com o uso do offset esta tarefa é facilitada, pois essa propriedade nos permite movimentar ao redor da célula ativa ou de uma célula especifica.

Ou seja podemos utilizar como:
Movimentar a partir de célula especifica >> Range(“B2”).Offset(1,0).Select
Ou
Movimentar ao redor da célula ativa >> ActiveCell.Offset(1,0).Select

Modo de usar:
Na propriedade offset o primeiro número dentro dos parênteses representa as linhas que você irá movimentar. Número positivo significa quantas casas a para baixo, número negativo acima e o zero permanece no mesmo local

O segundo número dentro dos parênteses representa as colunas, positivo a direita, negativo à esquerda e o zero permanece na mesma coluna.

comoFuncionaOffset

Ou seja para movimentar o cursor uma célula para baixo:
ActiveCell .Offset(1,0).Select
Movimentar acima:
ActiveCell .Offset(-1,0).Select
Movimentar para direita:
ActiveCell.Offset(0,1).Select
Movimentar para esquerda:
ActiveCell.Offset(0,-1).Select

__________________________________________________________________________

Caso esteja iniciando com macros sugiro acessar os primeiros passos ->> clique aqui

Caso deseja ver mais utilidades com a propriedade offset – >> clique aqui

 

Segue Vídeo sobre Range, Cells e Offset

 

Para ajudar ainda mais, coloco abaixo a planilha Range, Cells e Offset gratuitamente.
Espero que lhe ajude!

download planilha excel vba

Excluir Linhas Duplicadas

Excluindo linhas duplicadas em coluna ordenada.

Sub DelDoubleLine()
Dim nLine As Long
Dim nString, nRow As String
Dim nAdress as String 

Let nLine = 1
Let nAdress = “B10”

Range(nAdress).Select

Let str = Range(nAdress).Value

Do While Not ActiveCell.Offset(nLine).Value = “”
If ActiveCell.Offset(nLine).Value = nString Then
GoSub DeleteRow
Else
Let nString = ActiveCell.Offset(nLine).Value
Let nLine = nLine + 1
End If
Loop

Exit Sub

DeleteRow:
Let nRow = nLine + 1 & “:” & nLine + 1

Rows(nRow).Select

Selection.Delete Shift:=xlUp

Range(nAdress).Select

Return
End Sub

http://info.abril.com.br – escrito por André Luiz Bernardes

Excluindo linha em branco

Geralmente eu faço um código bem maior e lento, mas eu descobri a função abaixo e vale  apena divulgar.

Com o código abaixo possibilitará deletar todas as células em branco que estiverem na coluna D

Sub DelBlankRows()
Range(“D1:D” & Cells _
(Rows.Count,2).End(xlUp).Row).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
_______________________________________________________________
Fonte: infoonline  – Artigo escrito por: André Luiz Bernardes

Como Contar Linha Com Vba

Há várias maneiras de contar linha com vba, existe tantas que não lembro todas, e cada tipo de procedimento possui vantagens e desvantagens.

E neste artigo específico vou trazer duas maneiras:

 

Codigo 1 – contar linha a linha

>>CODIGO 1 – O problema do código abaixo é o tempo para verificar (dependendo da qtde) e complexidade, pois ele irá varrer linha a linha da coluna especificada

Sub Macro1()

varColuna = 1 ' Coluna que será verificado
varLinha = 1 ' Linha inicial que será verificado
varConteudo = 1
Do While varConteudo <> Empty 'continua a verificar se conteudo for diferente de vazio
   varLinha = varLinha + 1 'contador de linha
   varConteudo = Cells(varLinha, varColuna).Value 'grava o valor da celula
Loop
MsgBox "A qtde. de linhas é: " + CStr(varLinha - 1)

End Sub

 

Codigo 2 – Contar linha 2

‘>>CODIGO 2 O problema deste código abaixo que se tiver uma linha vazia no meio dos registros ele vai contar junto

Sub Contador()

numeroRegistros = Range("A65536").End(xlUp).Row
MsgBox "Número de Registros: " & numeroRegistros, vbOkOnly, "Número de registros em: " & now()

End Sub

‘Este ultimo código é visto pelo site msdn


 

E como havia dito existe outras maneira que você poerá ver aqui no site:

Ver última linha preenchida
Ultima célula alterada

Última linha vazia ou preenchida

O código de última linha que está demonstrado abaixo é muito simples e funcional, ele verifica a última linha preenchida na coluna A, se você quiser saber a ultima linha vazia basta no final do código colocar  +1

Sub Macro1()

   UltimaLinha = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

End Sub

Última Célula Alterada na Planilha

Este código difere dos outros pois aqui você vai ver qual a última célula alterada, ou seja a última linha com célula alterada e mesmo que o valor tenha sido apagado você irá saber.

Foi utilizado durante tempos atrás em um projeto que necessitava saber a última célula alterada e se fosse diferente do desejado o código salvava a pessoa que alterou

Perfeito para saber se alguém fez alguma alteração em sua planilha.

 

Código Última Célula Alterada

Cells(1, 1).Select
ActiveCell.SpecialCells(xlLastCell).Select
num_linha = ActiveCell.Cells.Row
num_coluna = ActiveCell.Cells.Column

 

.

Ultima linha vazia ou em branca da planilha

Pessoalmente não gosto de utilizar este tipo de código (já tive problemas) para ultima linha vazia.
Mas visualmente é mais fácil que o uso do while.

 

Exemplo de ultima linha vazia:

Range("a20").Select '....Seleciona primeira linha preenchida
Selection.End(xlDown).Select '....vai até última linha preenchida
x = Selection.Row '....grava na variavel a última linha

x = x + 1 ' ...pega a célula em  "branco".

 

O problema está se você tiver uma linha vazia no meio da sua coluna. Se for utilizar este código recomendo classificar antes.

 

Exemplo de ‘Do While’ – qual a ultima linha preenchida

Este artigo é bem simples, pois o intuito é demonstrar o uso do do while.

Conforme imagem e código abaixo é possível verificar com VBA linha em branco (vazia) e também como usar o “do while” na planilha:

VBA linha em branco

 

Como o Do while é uma estrutura de repetição (faça enquanto) e com esta vamos usar para repetir a contagem das linhas (contaLinha = contaLinha + 1) enquanto a linha atual não for vazio (verificaCel)

 

Codigo Ultima Linha com Do while

Sub teste()

contaLinha = 1 'Esta variavel irá servir para pular de linha
verificaCel = Cells(contaLinha, 1).Value 'Variável para gravar o conteúdo da célula
Do While verificaCel  ""         'Faça enquanto conteudo da celula diferente de  vazio
   '...
   contaLinha = contaLinha + 1 'soma ela mesma, pula para próxima linha
   verificaCel = Cells(contaLinha, 1).Value  'verifica novo conteudo
Loop 'volta para o while
MsgBox "A linha vazia é " + CStr(contaLinha) 'Mostra mensagem, qual linha é a vazia

End Sub