我正在尝试使用验证将选项列表显示为单元格的下拉列表,但我想从另一个工作表上生成的单元格中动态填充选项列表。我一直在1004 error: "Application-defined or object-defined error"
声明中获得.Add
。如果我使用refStrg1或refStrg2,我会收到此错误。我构建的引用函数正常运行。 Excel 2010。
以下是我的测试代码:
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
在调试模式下,我有以下手表报告:
Sheets("Chosen Benchmarks").Index = 4
getLastRowFromOf(Sheets("Chosen Benchmarks"), "B") = 102
refStrg1 = "=indirect("'Sheet4'!B2:B102")"
refStrg2 = "=Sheet4!B2:B102"
任何有关获取公式参考表位置的帮助都将不胜感激。另外我应该注意,我可以在引用字符串的开头删除“=”字符以获得对单元格的验证,以显示为单个选项的文字公式字符串(当然没有等号),但我确实需要这些值作为我试图引用的那些单元格中的列表。
提前致谢!
答案 0 :(得分:1)
显然我生产的参考字符串让Excel混淆了,因为我已经重命名了Sheet 4.使用单引号围绕Sheet的名称而不是Sheet及其索引号使得formula1文本有效。
refStrg2 = "='Chosen Benchmarks'!B2:B" & getLastRowFromOf(Sheets("Chosen Benchmarks"), "B")