簡體   English   中英

如何在Excel中以編程方式引用動態范圍進行單元格驗證

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM