Denna handledning visar hur du använder datavalidering för att arbeta med rullgardinslistor i Excel med VBA.
Excel -datavalidering låter dig begränsa vilka värden som kan anges i en cell eller intervall. Du kan begränsa poster till positiva heltal, text, datum och mycket mer. I den här självstudien ska vi titta på hur du skapar en listruta för datavalidering i en cell med VBA.
Obs! Ett alternativ till en listruta för datavalidering är ett ListBox-objekt. Listboxar kan läggas till i Excel -kalkylblad. ListBoxes kan utlösa makron som körs varje gång ett ListBox -värde ändras. ListBoxar används också i VBA -användarformulär.
Skapa en nedrullningslista med VBA
Vi har texten Frukt i cell A1, och vi kommer att skapa en rullgardinsmeny i cell A2, med fem poster.
Vi använder metoden Validation.Add och anger att parametern Type är xlValidateList. Du kan lägga till de specifika objekten du vill ha i din lista med Formula1 -parametern.
Följande kod skapar en rullgardinsmeny för datavalidering i cell A2:
123456 | Sub DropDownListinVBA ()Område ("A2"). Validation.Add Type: = xlValidateList, AlertStyle: = xlValidAlertStop, _Formula1: = "Apelsin, äpple, mango, päron, persika"Avsluta Sub |
Resultatet är:
Fyll i en nedrullningslista från ett namngivet område i VBA
Du kan använda ett namngivet intervall som innehåller objekten för att fylla i en rullgardinsmeny i VBA. Vi har det namngivna intervallet Djur som visas nedan:
Vi måste ställa in Formula1 -parametern lika med det angivna intervallet. Följande kod skapar en rullgardinsmeny för datavalidering i cell A7 baserat på objekten i det angivna intervallet:
123456 | Sub PopulateFromANamedRange ()Område ("A7"). Validation.Add Type: = xlValidateList, AlertStyle: = xlValidAlertStop, _Formula1: = "= Djur"Avsluta Sub |
Resultatet är:
Ta bort rullgardinsmenyn
Du kan använda metoden Validation.Delete för att ta bort rullgardinsmenyn från cellen. Följande kod skulle ta bort rullgardinsmenyn från cell A7 i exemplet ovan:
12345 | Sub RemoveDropDownList ()Område ("A7"). Validering. RaderaAvsluta Sub |