Excel VBA重命名错误的工作表
我有一个Excel有5个工作表的macros启用工作簿。 其中一张名为“NC”,另一张名为“SC”。 我有一部分代码将date添加到这些表单的名称中。
表格(“NC”)。名称=“NC”和replace(date,“/”,“ – ”)表格
然后稍后如果单击重置button,我做了一个代码切换回到先前的“NC”和“SC”的名字,但这是我得到的问题。
表(2).Name =“NC”表(3).Name =“SC”
表(2).Name =“NC”正常工作表(3).Name =“SC”然而,改名Sheet(4)
我认为无论如何重新排列或重新排列工作表选项卡,这些工作表编号或工作表编号都不会改变。 我不明白为什么它准确地重命名表格(2),但不是表格(3)。 看看我的项目浏览器下面,它重命名表(4),而不是从“NCToday”到“SC”。 表格(3)在图片中显示“SC”,但是由于这是手动重置,但是您可以看到这个安排,代码表(3).Name =“SC”不应该将表格(4)从“NCToday”更名为“SC”。
表(3)不一定意味着sheet3
例:
如果我input到即时窗口, ?worksheets(1).name
,我得到这个结果:
Sheet2中
请注意,系统查看Excel电子表格(Sheet2,Sheet1,Sheet3)上的图表顺序,而不是VBA项目(Sheet1,Sheet2,Sheet3)中的订单。
要重新将表单重命名,您可能需要反转最初重命名它们的方法:
Sheets("SC" & Replace(Date, "/", "-")).Name = "SC"
有许多方法可以引用工作表。
运用
Sheets(number).Name 'this will print all the names in the Sheets(i) order for i = 1 to Sheets.count debug.pring sheets(i).name & " at index " & i next i
将工作簿中索引number
的工作表从左向右重命名。
运用
Sheet2.name = "NC"
将重命名资源pipe理器中显示的VBA对象Sheet2
。
我怀疑你想这样做:
Sheet2.Name = "NC" Sheet3.Name = "SC"
在重命名之前,您可以使用Like选项来比较表格名称?
Dim s as Worksheet For each s in Worksheets if s.Name like "NC*" and not s.Name = "NCToday" then s.Name = "NC" end if next
这可以解决你的页面洗牌,而不必诉诸于“不要重新洗牌评论”?
像这样的评论容易被误解,并且可能会在某个阶段让你的代码陷入麻烦和错误。
更好地尝试和万无一失!
祝你好运 !
干杯!