2016-04-25 100 views
0

我想創建一個下拉列表,其中包含一些固定值,大多數示例都是關於從表格中輸入的下拉列表。我的情況下,我想把「IF,AND,OR」放在drop中,任何人都可以建議如何在excel中實現這個功能? 我發現this示例爲每個地方的工作表的現有值。如何在自定義值的Excel中創建下拉列表

回答

1

你不需要VBA來做到這一點,但你可以在代碼中做到這一點。設置列表的最簡單方法是轉到數據選項卡,然後轉到數據驗證。然後,在設置選擇列表作爲您的驗證標準,並輸入您的三個值(逗號分隔)。您可以通過複製和粘貼格式或左鍵單擊拖動和複製格式將其複製到任何單元格。

enter image description here

如果你真的想這樣做,在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 
+0

這就是我想要的,但它可以做到沒有在工作表中有這些IF和OR值。就像我們在編碼時所做的那樣,您可以設置一個數值很小的數組,並將其作爲可能值分配給某個字段 –

+0

您的帖子顯示想要的下拉菜單,下拉菜單包含顯示的值。在Excel中,數據取自單元格,下拉菜單是用戶輸入,如果隱藏了IF AND OR,它們來自哪裏? – dinotom

+0

這些都是我想要提供的編程或其他隱藏的意思很少的固定值。感謝這個VBA是我一直在尋找:) –

0

尚不完全清楚你想要的陣列,但我猜也許你想依賴下拉菜單基於另一個單元格的值? See more information about this here,您可以創建一個包含所有潛在下拉值的工作表,然後在數據驗證工具中使用= INDIRECT(SUBSTITUTE(CellName,「」,「」))。因此,如果您希望依賴值位於單元格B1中,並且在B2中下拉,則可以將數據驗證(數據選項卡)和下拉框放在B2中(選擇「列表」),其中源爲= INDIRECT( SUBSTITUTE(B1,「」,「」))這個鏈接可能有助於解釋它對圖片更好一些

在上面的例子中,您使用名稱管理器(公式選項卡)來命名所有潛在的列出你想要的,沒有空格(所以如果你有,一個名爲「新員工」的名單,在名稱管理器中,你可以稱之爲NewEmployees。然後,在你的工作表中有所有的值,你有標題作爲列表標題(所以新員工),所有的值跟隨它,你只想顯示,如果新員工是從屬細胞的價值。

+0

不完全是這樣,但是您給出的鏈接對於我的下一個問題階段非常有用。謝謝 :) –

相關問題