我在作業表“(T)機械”上設定了一個動態級聯下拉串列(下拉值根據在它旁邊的單元格中選擇的內容而變化)。
我希望相同的資料驗證串列下拉串列可以在其他作業表上作業,即“(T)行”。
為此,我選擇在激活作業表時使用 VBA 換出命名范圍內的作業表名稱。(下拉選單使用完全相同的單元格) -
下面的代碼幾乎可以作業,除了 RefersTo 的輸出與輸入的不同,我無法弄清楚為什么它在步驟之間發生變化:
Private Sub Worksheet_Activate()
Dim rng As String
Dim xWb As Workbook
Dim xNameString As String 'Existing Name of Named Range
Dim xName As Name 'Name
Set xWb = Application.ActiveWorkbook
xNameString = "Dyn_oSystem"
rng = "='(T) Lines'!$D2"
Debug.Print (rng)
Set xName = xWb.Names.Item(xNameString)
With xName
.RefersTo = rng
End With
Debug.Print (xName.RefersTo)
End Sub
除錯輸出
='(T) Lines'!$D2
='(T) Lines'!$D3
是什么導致了價值轉移?
uj5u.com熱心網友回復:
TL;DR:如果要創建絕對參考,請更改$D2為。如果您正在尋找從(隱含在參考中)開始的相對參考,那么您的方法是合理的。如果您還想列印參考,請確保您的活動單元格位于第 1 行。$D$2rng = "='(T) Lines'!$D2"$D2R[1]C4A1$D2
相對參考的意外影響:
關于您的參考為何發生變化的答案可以在
但是,如果我們將 Named Range 的參考設定為$D2,而我們的活動單元格位于第 3 行,我們最終會得到一個意想不到的結果:

現在,偏移量將為-1。這會導致第 1 行的參考一直被推到 D 列的末尾(第 1048576 行)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/492099.html
