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.
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.
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!
Ultima Coluna
Neste artigo quero tratar de um assunto que conforme vamos usando o vba surge a necessidade de sabermos: a ultima coluna de uma planilha.
Para não ficar “quebrando a cabeça” segue um código rápido e simples para pegar a última coluna preenchida.
Código Ultima Coluna
colunaVerificada = 5000 linhaVerificada = 2 ultimaColuna = ActiveSheet.Cells(linhaVerificada, colunaVerificada ).End(xlToLeft).Column
Obs.: Esse código verifica apenas de uma linha, no caso acima na linha 2
Segue demonstração abaixo:
______________________________________________________________
*Dúvidas sobre o vídeo:
>>Como habilitar a Guia Desenvolvedor ?
>>Primeiros Passos em VBA?
______________________________________________________________
Obs.: Ao copiar os códigos do site e colar direto no excel substitua “ e ” por ” (aspas duplas)
WorksheetFunction – fórmulas em VBA
Todas as funções do Excel como: PROCV, CONT.VALORES, CONT.SE, SOMA, MÉDIA; podem ser executadas dentro do VBA.
Para isso usamos a função worksheetfunction.
Imagine que você precisa saber quantas células não estão vazias na coluna A da planilha, no Excel você usaria:
=CONT.VALORES(A:A)
no vba você pode fazer assim:
worksheetfunction.countA(columns(“A”))
para passar esta informação para uma variável (exemplo: contagem)
contagem = worksheetfunction.countA(columns(“A”))
obs.: countA é a função CONT.VALORES em inglês!
Fonte: