如何在Excel中以编程方式创build下拉框?
我有一个电子表格,在sheet1中有一个下拉菜单。 任何人都可以告诉我如何在同一张电子表格的sheet3中进行下拉操作,假设它有三个名为sheet1,sheet2和sheet3的工作表。 该程序如下所示。
Range("A1").Select With Selection.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=$B$1:$B$3"/*Guess i need to make some change in this*/ .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .ShowInput = True .ShowError = True End With
非常感谢
使用锚作为返回logging集的插入点定义dynamic命名范围 。
然后,在希望有下拉列表的单元格中,键入=(名称范围的名称) – 下拉选项将成为数据库查询返回的内容。
例:
=OFFSET(Sheet1!$B$1,0,0,COUNTA(Sheet1!$B$1:$B$20),1)
公式=OFFSET(Sheet1!$B$1,0,0,COUNTA(Sheet1!$B$1:$B$20),1)
定义一个命名范围为“Options1”
设置您的数据库查询将结果返回到单元格B1
select单元格A1并打开validation对话框(数据>validation)
select列表,然后input=Options1
作为来源
以上可以通过编程来完成
ActiveWorkbook.Names.Add Name:="Options1", RefersTo:="=OFFSET(Sheet1!$B$1,0,0,COUNTA(Sheet1!$B$1:$B$20),1)" With Range("A1").Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=Options1" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .ShowInput = True .ShowError = True End With
当您使用基本的Excel函数进行下拉式logging(数据>validation,然后select允许:列表)时 ,您可以查看生成的代码并根据自己的喜好进行编辑。 之后您可以重新使用代码。
创build$ B $ 1:$ B $ 3中的“命名范围”,然后使用公式中的命名范围。 如果您不想使用命名范围,则在公式中指定图纸名称,如= Sheet1!$ B $ 1:$ B $ 3。
有关在工作簿中命名单元格的帮助,请参阅“工作簿中的名称单元格”帮助主题,并查看“命名单元格或单元格区域”部分。
- 在Microsoft Excel中命名范围在 http://www.officearticles.com/excel/named_ranges_in_microsoft_excel.htm
- Excel命名范围 http://spreadsheets.about.com/od/exceltips/qt/named_range.htm
如果您正在使用的数据填充下拉列表,则可以select每个工作表并添加validation。 请参阅下面的代码。
Sub Dropdowns1() With Worksheets("Sheet1").Range("A1").Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=$B$1:$B$3" End With With Worksheets("Sheet3").Range("A1").Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=$B$1:$B$3" End With End Sub
如果您用于填充下拉列表的数据仅存在于sheet1上 ,则需要先创build一个指向该数据的命名范围,然后使用命名范围来对下拉菜单进行制作。
下面的代码创build一个名为范围MyList ,它引用Sheet1上的范围B1:B3 。 然后它使用Sheet1和Sheet3上的命名范围来填充下拉列表。
Sub Dropdowns2() ActiveWorkbook.Names.Add Name:="MyList", RefersTo:="=Sheet1!$B$1:$B$3" With Worksheets("Sheet1").Range("A1").Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=MyList" End With With Worksheets("Sheet3").Range("A1").Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=MyList" End With
结束小组