Este tutorial demonstrará como usar a Validação de Dados para trabalhar com listas suspensas no Excel usando VBA.
A Validação de Dados do Excel permite que você limite os valores que podem ser inseridos em uma célula ou intervalo. Você pode limitar as entradas a números inteiros positivos, texto, datas e muito mais. Neste tutorial, veremos como criar uma Lista suspensa de validação de dados em uma célula usando o VBA.
Observação: uma alternativa para uma lista suspensa de validação de dados é um objeto ListBox. ListBoxes podem ser adicionados a planilhas do Excel. ListBoxes podem acionar macros que são executadas sempre que um valor de ListBox é alterado. ListBoxes também são usados em Userforms do VBA.
Criando uma lista suspensa usando VBA
Temos o texto Fruta na célula A1 e vamos criar uma lista suspensa na célula A2, com cinco entradas.
Usaremos o método Validation.Add e especificaremos que o parâmetro Type é xlValidateList. Você pode adicionar os itens específicos que deseja em sua lista usando o parâmetro Formula1.
O código a seguir criará uma lista suspensa de validação de dados na célula A2:
123456 | Sub DropDownListinVBA ()Intervalo ("A2"). Validation.Add Type: = xlValidateList, AlertStyle: = xlValidAlertStop, _Fórmula1: = "Laranja, Maçã, Manga, Pêra, Pêssego"End Sub |
O resultado é:
Preencher uma lista suspensa de um intervalo nomeado no VBA
Você pode usar um intervalo nomeado contendo os itens para preencher uma lista suspensa no VBA. Temos a faixa nomeada Animais mostrados abaixo:
Temos que definir o parâmetro Formula1 igual ao intervalo nomeado. O código a seguir criará uma lista suspensa de validação de dados na célula A7 com base nos itens do intervalo nomeado:
123456 | Sub PopulateFromANamedRange ()Intervalo ("A7"). Validation.Add Type: = xlValidateList, AlertStyle: = xlValidAlertStop, _Fórmula1: = "= Animais"End Sub |
O resultado é:
Removendo a lista suspensa
Você pode usar o método Validation.Delete para remover a lista suspensa da célula. O código a seguir removeria a lista suspensa da célula A7 no exemplo acima:
12345 | Sub RemoveDropDownList ()Intervalo ("A7"). Validation.DeleteEnd Sub |