我有一张电子表格,在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
非常感谢
答案 0 :(得分:2)
使用锚定义dynamic named range作为返回记录集的插入点。
然后,在您希望获得下拉列表的单元格中,键入=(命名范围的名称) - 下拉选项将是从数据库查询返回的任何内容。
示例:
使用公式=OFFSET(Sheet1!$B$1,0,0,COUNTA(Sheet1!$B$1:$B$20),1)
设置数据库查询以将结果返回到单元格B1
选择单元格A1并打开验证对话框(数据>验证)
选择列表,然后输入=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
答案 1 :(得分:0)
当您使用基本Excel函数录制宏来下拉(数据>验证,然后选择允许:列表)时,您可以查看生成的代码并根据自己的喜好进行编辑。您可以在之后重复使用该代码。
答案 2 :(得分:0)
从$ B $ 1:$ B $ 3中创建一个“命名范围”然后使用公式中的命名范围。如果您不想使用命名范围,请在公式中指定工作表名称,如= Sheet1!$ B $ 1:$ B $ 3.
有关在工作簿中命名单元格的帮助,请参阅“在工作簿中命名单元格”帮助主题,并查看“命名单元格或一系列单元格”部分。
答案 3 :(得分:0)
如果您用于填充下拉列表的数据存在于每张工作表上,则可以选择每个工作表并添加验证。请参阅下面的代码。
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 上,则需要首先创建一个引用数据的命名范围,然后使用命名范围来填充下拉列表。
下面的代码创建了一个命名范围 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
End Sub