我試圖通過完成一個項目來教自己的VBA,但不幸的是我已經達到了我能想出的極限。Excel VBA - 重命名命名範圍會導致無法讀取的內容錯誤?
該項目涉及一個工作簿,其中的工作表打算用作其他工作表的模板。該工作表具有多個由命名範圍引用的表格;表格和命名範圍包含單詞'模板'。
將模板工作表複製到新工作簿中七次。在複製後立即將複製的工作表重命名爲一週中的某一天。
我也需要重命名錶和命名範圍,但是當我發現如何通過用適當的星期幾取代'template'來循環和重命名錶時,我無法弄清楚如何執行相同的命名範圍。
命名的範圍開始爲:
AHSO_Tasks_Template 指表 _01_AHSO_Tasks_Monday [AHSO任務] 範圍是週一
這反映了一週的其餘六天,並反覆多次用不同的詞彙集合取代AHSO_Tasks。在上面的例子中的名稱管理器將顯示一個名爲 -
Sub Namedrangesloop()
Dim Nm As Name
'Loop through each named range in workbook
For Each Nm In ActiveWorkbook.Names
Dim oldrng As String
oldrng = Nm.Name
Dim rfto As String
rfto = Nm.RefersTo
Dim day As String
day = Mid(rfto, InStrRev(rfto, "_") + 1, InStr(rfto, "[") - InStrRev(rfto, "_") - 1)
Dim nwrng As String
nwrng = Replace(oldrng, "Template", day)
Nm.Name = nwrng
Next Nm
End Sub
這不工作:
我根據包含在該表的名稱平日他們是指運行此代碼重新命名的命名範圍作爲星期一的範圍!AHSO_Tasks_Monday(所以我只想要現在改變範圍名稱具有唯一的名稱,而不是AHSO_Tasks_Template七倍)。
但是當我保存並重新打開新的工作簿,我得到的消息:
Excel中發現filename.xlsx不可讀的內容。你想恢復這個工作簿的內容嗎? (等等)。
如果我點擊是,然後我找到當我打開名稱管理器,所有命名的範圍已被刪除!我能做些什麼來改變這一點?
我確實想到了另一種方法,但我也一直在這樣做!
聽起來像你的工作簿有一個問題,這與VBA無關。我沒有看到你顯示的任何代碼如何創建損壞的文件。 –
如果點擊「否」會發生什麼? – findwindow
好吧,這更糟糕:/我認爲約翰的權利,其他東西是腐敗的,但有趣的是它似乎隻影響命名的範圍。 – findwindow