Excel VBA重命名错误的工作表

时间:2013-06-05 18:52:30

标签: excel vba excel-vba excel-2007

我有一张excel宏启用的工作簿,有5张。其中一张被命名为“NC”,一张被命名为“SC”。我有部分代码为这些工作表的名称添加日期。

表格(“NC”)。名称=“NC”&替换(日期,“/”,“ - ”) 表格(“SC”)。姓名=“SC”&替换(日期,“/”,“ - ”)

然后如果单击重置按钮,我会创建一个代码将它们切换回以前的“NC”和“SC”名称,但这就是我遇到问题的地方。

表格(2).Name =“NC” 表格(3).Name =“SC”

Sheets(2).Name =“NC”工作正常 Sheets(3).Name =“SC”但是,重命名Sheet(4)

无论您如何重新排列或重新排序工作表标签,我都认为这些工作表代码或工作表编号不会发生变化。我不明白为什么它准确地重命名为Sheets(2)而不是Sheets(3)。看下面的项目资源管理器,它将Sheets(4)重命名为“NCToday”到“SC”。表格(3)在图片中显示“SC”,但由于这是手动重置但你可以看到排列,代码表(3).Name =“SC”不应该从“NCToday”重命名为Sheets(4) “SC”。

Sheet List

3 个答案:

答案 0 :(得分:2)

表(3)不一定表示sheet3

实施例: enter image description here

如果我输入即时窗口?worksheets(1).name,我会得到以下结果:

  

Sheet 2中

请注意,系统会查看Excel电子表格(Sheet2,Sheet1,Sheet3)上的工作表顺序,而不是VBA项目中的订单(Sheet1,Sheet2,Sheet3)

要重新命名工作表,您可能需要反转最初用于重命名工作的方法:

Sheets("SC" & Replace(Date, "/", "-")).Name = "SC"

答案 1 :(得分:0)

有很多方法可以引用工作表。

使用

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"

将重命名资源管理器中显示的VBA对象Sheet2

我怀疑你想做:

Sheet2.Name = "NC" 
Sheet3.Name = "SC"

答案 2 :(得分:0)

您可以使用Like选项在重命名之前比较工作表名称吗?

a

这可以解决你的页面改组问题,而不必诉诸“不要重新发送评论”?

这样的评论很容易被误解,很可能会让你的代码在某个阶段遇到麻烦和错误。

最好尝试将其变得简单!

Goodluck!

干杯!