2016-04-25 183 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

不完全是这样,但是您给出的链接对于我的下一个问题阶段非常有用。谢谢 :) –

相关问题