我有一张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”。
答案 0 :(得分:2)
表(3)不一定表示sheet3
实施例:
如果我输入即时窗口?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!
干杯!