如何在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。

有关在工作簿中命名单元格的帮助,请参阅“工作簿中的名称单元格”帮助主题,并查看“命名单元格或单元格区域”部分。

如果您正在使用的数据填充下拉列表,则可以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 。 然后它使用Sheet1Sheet3上的命名范围来填充下拉列表。

 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 

结束小组