É muito comum ao se utilizar o gravador de macros existirem métodos .Select no código gravado, junto ao objeto Range.
.Select é usado para selecionar um ou mais elementos do Excel (assim como pode ser feito com o mouse), permitindo posteriormente algumas manipulações com a seleção.
Selecionando células com o mouse:
Selecionando células com o VBA:
'Range([célula1],[célula2])
Range(Cells(1, 1), Cells(9, 5)).Select
Range("A1", "E9").Select
Range("A1:E9").Select
Todas as linhas de código acima fazem a mesma ação: selecionar o intervalo partindo de "A1" até "E9".
Se existem células preenchidas por dados sem intervalos vazios entre elas, uma opção para uma seleção automática é a propriedade CurrentRegion.
CurrentRegion irá demarcar, a partir de um Range, toda área preenchida com dados.
Range("A1").CurrentRegion.Select
Atenção para que não existam intervalos vazios entre os valores, pois o CurrentRegion mapeará a região através de células ajacentes (horizontal, vertical e diagonal).
Range("A1").CurrentRegion.Select
Com todos os dados adjacentes
Nem todos os dados adjacentes
Não é selecionado a célula "C4" pois ela não está imediatamente adjacente a nenhuma célula preenchida.
A propriedade ActiveCell faz referência a célula ativa da planilha. No caso de uma seleção, é a única célula que fica em branco.
Uma planilha possui apenas uma única célula ativa.
Range("B2:C4").Select
ActiveCell.Value = "Ativa"
A propriedade AtiveCell costuma ser a primeira célula (superior esquerda) do Range, sendo diferente disso normalmente quando a seleção é feita manualmente pelo usuário (sem auxilio de macros).
A propriedade AtiveCell é utilizada em comandos mais avançados, como Resize.
Após selecionar as células desejadas, podemos utilizar Selection para nos referenciarmos a ela e assim realizarmos as alterações desejadas:
Range("A1:D7").Select
Selection = 7
Selection também aceita métodos e propriedades (que variam de acordo com o que foi selecionado).
Selection.ClearContents 'Apaga apenas o conteúdo da seleção
Selection.Interior.Color = RGB(255, 255, 0) 'Adiciona cor ao fundo à seleção
Como no caso foi selecionado um intervalo de células, o Selection se comportará similarmente a um Range. Portanto, Selection também deverá aceitar a propriedade .Interior.Color.
RGB (Red Green Blue) é um sistema de cores aditivo altamente difundido e utilizado em inúmeras aplicações e linguagens. Seus valores de entrada para cada cor, no caso do exemplo, vão de 0 até 255.
Caso exista a necessidade de se replicar uma fórmula para toda uma seleção, é possível utilizar o método .FillDown
Selection.FillDown
Antes do FillDown
Depois do FillDown
.FillDown é um método aplicável a Range. Como Selection é referente a um intervalo de células (equivalente a um Range), logo o método será aceito.
.FillDown replica a fórmula da primeira linha do Range/Selection, independente de qual for a ActiveCell.
.FillDown pode ser usado em intervalos maiores que uma coluna (E.g. Range("B1:C2").FillDown replicará as fórmulas de B1 e C1 para B2 e C2 respectivamente).
É possível selecionar uma ou múltiplas linhas ou colunas inteiras com o VBA.
Range("B2").EntireRow.Select
Range("C3:D3").EntireColumn.Select
A seleção sempre será referente ao último comando executado com Select.
Para se inserir uma linha, basta utilizar o método Insert.
Range("A7").EntireRow.Insert
'Neste caso, conteúdo da sétima linha será deslocado para baixo
Para se deletar uma linha, basta utilizar o método Delete.
Range("A7").EntireRow.Delete
'Neste caso, conteúdo da oitava linha será deslocado para a sétima
Do mesmo modo que EntireRow e EntireColumn é possível utilizar Rows e Columns para selecionar uma linha ou uma coluna.
Columns(5).Select
Rows(3).Select
Para ocultar linhas:
Range("A1:C3").Rows.Hidden = True
Foram ocultadas no exemplo as linhas de 1 a 3 da planilha.
Row (linha) e Column (coluna) são propriedades muito utilizadas para se obter o endereço, em forma numérica, da primeira linha e da primeira coluna de uma seleção ou de uma célula específica.
Range("A3:H30").Row 'Referente a linha; retorna 3
Range("B3").Column 'Referente a coluna; retorna 2
Os resultados de Row e Column são muitas vezes empregados em loops ou em redimensionamentos.
Exercício Sugerido
SuperExcelVBA.com é um site voltado ao aprendizado de VBA. Exemplos e explicações podem ter sido simplificados para maior e mais veloz compreensão. Estamos constantemente nos atualizando e corrigindo erros, porém não existe garantia sobre o conteúdo disponível no site. Todos os direitos reservados.
Excel ® é uma marca registrada da Microsoft Corporation.
© 2024 SuperExcelVBA | SOBRE