Como criar um intervalo nomeado usando vba?
Para criar um intervalo nomeado usando VBA, você precisa usar a propriedade “Nomes” posteriormente com o método “Adicionar”. No método add você tem argumentos para definir qual nome deseja dar ao intervalo e especificar o endereço do intervalo (certifique-se de usar o cifrão com o endereço para congelar o intervalo).
Crie um intervalo de nomes usando VBA
- Defina a pasta de trabalho na qual deseja criar o intervalo nomeado.
- Use a propriedade de nomes e adicione um método adicional.
- Especifique o nome no argumento “Nome”.
- Consulte o intervalo usando o argumento “ReferTo”.
No exemplo acima, você tem a pasta de trabalho ativa, então usando a propriedade “Nomes” com o método “Adicionar” você define o nome do intervalo, e no final, o endereço do intervalo que deseja usar.
Como eu disse anteriormente, no intervalo de endereços você precisa usar o sinal $ para congelar o endereço. Você também pode usar ThisWorkbook para fazer referência à pasta de trabalho na qual está escrevendo o código ou pode usar para fazer referência a outra pasta de trabalho usando o objeto pasta de trabalho.
VBA para criar intervalo nomeado a partir da seleção
Você também pode usar a propriedade de seleção para criar um intervalo nomeado a partir da seleção. Considere o seguinte código.
ActiveSheet.Names.Add Name:="myRangeName", RefersTo:=Selection
E no código a seguir você tem uma caixa de mensagem com a qual pode inserir o nome que deseja dar ao intervalo nomeado.
Sub vba_named_range() Dim iName As String iName = InputBox("Enter Name for the Selection.") ActiveSheet.Names.Add Name:=iName, RefersTo:=Selection End Sub
Redimensione um intervalo nomeado usando VBA (Dynamic Named Range)
Para redimensionar um intervalo nomeado que já está presente na planilha, você deve usar a propriedade resize e informar ao VBA quantas linhas e colunas deseja expandir do intervalo atual. Considere o código a seguir que expande o intervalo denominado “myRange”, que inicialmente tem a célula A1 como intervalo, mas a redimensiona para a coluna M e a linha 11.
Sub vba_named_range() Dim iRow As Long Dim iColumn As Long iRow = ActiveSheet.Range("A1").End(xlDown).Row iColumn = ActiveSheet.Range("A1").End(xlToRight).Column ActiveSheet.Range("myRange") _ .Resize(iRow, iColumn).Name = "myRange" End Sub
Dividi isso em três partes para deixar isso claro para você, agora vamos ao que interessa.
- Na PRIMEIRA parte você tem variáveis declaradas para armazenar as linhas e número de colunas.
- Na SEGUNDA parte, você usou o método “END” com o intervalo para obter a última linha e coluna e armazená-las para variáveis.
- Na Parte TRÊS, você usou a propriedade Resize com o intervalo denominado “myRange”. E depois disso o número da linha e da coluna que você tem nas variáveis.
Quando você executa esse código, ele redimensiona o intervalo antigo com base nos dados que você possui e o torna um intervalo nomeado dinâmico. Sempre que precisar atualizá-lo, você pode executar o código e redimensionar o intervalo nomeado existente.