[英]How to create a drop-down in excel with custom values
我想在excel中創建一個帶有固定值的下拉菜單,大多數示例都是關於從下拉菜單輸入的信息。 在我的案例中,我想在下拉列表中放入“ IF,AND,OR”,有人可以建議如何在excel中實現這一目標嗎? 我發現此示例顯示了每個地方的圖紙的現有值。
您不需要VBA來執行此操作,但是您可以通過代碼來執行。 設置列表的最簡單方法是轉到“數據”選項卡,然后轉到“數據驗證”。 然后,在“設置”下,選擇“列表”作為驗證條件,然后輸入三個值(以逗號分隔)。 您可以通過復制和粘貼格式或單擊鼠標左鍵拖動和復制格式將其復制到任何單元格。
如果您真的想在VBA中做
使用數組
Sub CreateDropdownList()
' replace "A5:A12" with your named range if you have one
Range("A5:A12").Select ' range where you've listed your choices
' now sort them alphabetically, replace sheet1 with your sheetname
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("A5"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("Sheet1").Sort
' you can use your named range here as well
.SetRange Range("A5:A12")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveWorkbook.Names.Add Name:="choices", RefersToR1C1:= _
"=Sheet2!R5C1:R12C1"
Range("G13").Select 'this is the cell you want the dropdown in
With Selection.Validation
.Delete
'without array
'.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
'xlBetween, Formula1:="IF, AND, OR"
'with array
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=choices"
.IgnoreBlank = True
.InCellDropdown = True
.InputMessage = "Select a value"
.ErrorMessage = "No value selected"
.ShowInput = True
.ShowError = True
End With
End Sub
尚不清楚您想要什么,但是我猜想您是否想要基於另一個單元格的值的依賴下拉列表? 在此處查看有關此信息的更多信息 ,您可以制作一個具有所有潛在下拉值的工作表,然后在數據驗證工具中使用= INDIRECT(SUBSTITUTE(CellName,“”,“”))。 因此,如果您希望將相關值放在單元格B1中,並將下拉列表放在B2中,則可以將數據驗證(數據標簽)和下拉框放在B2中(選擇“列表”),其來源為= INDIRECT( SUBSTITUTE(B1,“”,“”))。該鏈接可能會幫助您更好地解釋圖片。
在上面的示例中,您使用名稱管理器(“公式”選項卡)來命名所需的所有潛在列表,而沒有空格(因此,如果有的話,一個名為“ New Employees”的列表)在名稱管理器中將其命名為NewEmployees然后,在包含所有值的工作表上,將標題作為列表標題(即“新員工”),其后的所有值僅在新員工是相關單元格的值時才要顯示。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.