[英]How to reference a dynamic range for cell validation in excel programmatically
我正在嘗試使用驗證使選項列表顯示為單元格的下拉列表,但我想從其他表格上生成的單元格中動態填充選項列表。 我不斷收到1004 error: "Application-defined or object-defined error"
.Add
語句上1004 error: "Application-defined or object-defined error"
。 如果使用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"
任何有關將公式帶到參考表位置的幫助,將不勝感激。 另外我還應該注意,我可以在參考字符串的開頭刪除“ =”字符,以對單元格進行驗證,以將文字公式字符串(當然沒有等號)顯示為單個選項,但是我確實需要這些值作為我嘗試引用的那些單元格中的列表。
提前致謝!
顯然,自從我重命名工作表4以來,我正在生成的參考字符串使Excel感到困惑。使用單引號將工作表的名稱而不是工作表及其索引號括起來,可以使Formula1文本起作用。
refStrg2 = "='Chosen Benchmarks'!B2:B" & getLastRowFromOf(Sheets("Chosen Benchmarks"), "B")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.