我试图通过完成一个项目来教自己的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