如何在Excel中以编程方式引用细胞validation的dynamic范围

我试图使用validation有一个选项列表显示为一个单元格的下拉列表,但我想dynamic地填充其他表单上生成的单元格的选项列表。 我不断收到.Add语句中的1004 error: "Application-defined or object-defined error" 。 我得到这个错误,如果我使用refStrg1或refStrg2。 我build立的引用的function正常执行。 Excel 2010。

以下是我的testing代码:

 Private Sub btnTest_Click() Dim refStrg1 As String, _ refStrg2 As String refStrg1 = "=indirect(" & """" & "'Sheet" & Sheets("Chosen Benchmarks").Index _ & "'!B2:B" & getLastRowFromOf(Sheets("Chosen Benchmarks"), "B") & """" & ")" refStrg2 = "=Sheet" & Sheets("Chosen Benchmarks").Index _ & "!B2:B" & getLastRowFromOf(Sheets("Chosen Benchmarks"), "B") With Sheets("Chosen Benchmarks").Range("F2").Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlEqual, _ Formula1:=refStrg2 '<-- Error 1004 .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .ShowInput = True .ShowError = True End With End Sub 

在debugging模式下,我有以下手表报告:

 Sheets("Chosen Benchmarks").Index = 4 getLastRowFromOf(Sheets("Chosen Benchmarks"), "B") = 102 refStrg1 = "=indirect("'Sheet4'!B2:B102")" refStrg2 = "=Sheet4!B2:B102" 

任何帮助获得公式参考表的位置,将不胜感激。 另外我应该注意到,我可以删除引用string开头的“=”字符以获得对单元格的validation显示为一个单一的选项文字公式string(当然没有等号),但我真的需要作为列表中的值我试图引用的值。

提前致谢!

所以显然,我生产的参考string是令人困惑的Excel,因为我已经重命名了工作表4.使用单引号括住工作表的名称而不是工作表,其索引号使公式1文本正常工作。

 refStrg2 = "='Chosen Benchmarks'!B2:B" & getLastRowFromOf(Sheets("Chosen Benchmarks"), "B")