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 

这可以解决你的页面洗牌,而不必诉诸于“不要重新洗牌评论”?

像这样的评论容易被误解,并且可能会在某个阶段让你的代码陷入麻烦和错误。

更好地尝试和万无一失!

祝你好运 !

干杯!