真的很感激可以提供的任何帮助! 我觉得这个问题是基本的,应该很容易搞清楚,但我很挣扎。我有一个Excel 2016工作簿,如果出现设置错误,则需要运行代码以将工作表的名称重置为“标准”。工作表位置(表格(1))不能使用,因为工作表位置可能会更改,并且不能使用可见工作表名称(表格(“名称”)),因为它不会是常量。这使用代号(Sheet1)作为适当的选项。 我设置了一个数组和简单的代码来重命名工作表,但它不会运行。
'WSName to define array of sheets by codename
'NewName to create reference to cell which contains new worksheet name
Dim WSName as Variant
Dim NewName as Variant
WSName = Array ("Sheet4","Sheet15","Sheet17","Sheet18")
NewName = Array("D15","D16","D17","D18")
'counter to cycle through arrays and rename the 4 worksheets
For Ncounter = 0 To 3
Sheets(WSName(Ncounter)).Name=Range(NewName(Ncounter)).Value
Next Ncounter
我可以用用户添加的工作表名称替换WSName数组,代码可以工作。我也尝试从代码中删除“Sheets”,因为我实际上是在说SheetsSheetX,但仍然没有。
我认为我错过了通过代号引用工作表的正确语法。任何帮助或建议将不胜感激,我很抱歉,我认为,这是一个新手,只是没有得到它的问题。
更新:根据Tim的回答,我这样做了:
'WSName to define array of sheets by codename
'NewName to create reference to cell which contains new worksheet name
Dim WSName, NewName as Variant
WSName = Array (Sheet4, Sheet15, Sheet17, Sheet18)
NewName = Array("D15","D16","D17","D18")
'counter to cycle through arrays and rename the 4 worksheets
For Ncounter = 0 To 3
WSName(Ncounter).Name=Range(NewName(Ncounter)).Value
Next Ncounter
此代码循环显示20页中的4页,并将这4位重命名为活动工作表中列出的值。 对于昏暗,我敢肯定,长而不是变体将工作正常(实际上更好),只需要在切换之前再多研究一下,所以我确信我对2之间的差异感到满意。 再次感谢所有回应......天使
答案 0 :(得分:1)
您可以将表单直接放入数组中 - 不需要使用codeNames:
void some_algorithm(std::function<void ()> callback) {
...
callback();
...
callback();
...
}
class SomeClass {
void foo() {}
};
int main() {
SomeClass object;
some_algorithm(std::bind(&SomeClass::foo, &object));
}
您需要指定哪个工作表包含您要重置的工作表名称。只需使用&#34; Range()&#34;将默认为ActiveSheet。
假设重命名的工作表与上面的代码在同一工作簿中。如果情况并非如此,那么请回到使用名称并使用下面链接中的JFC功能来获取每张纸的参考。
Fully reference a worksheet by codename
在循环中:
Dim arrWS, NewName, Ncounter As Long
arrWS = Array (Sheet4, Sheet15, Sheet17, Sheet18)
NewName = Array("D15","D16","D17","D18")
'counter to cycle through arrays and rename the 4 worksheets
For Ncounter = 0 To 3
arrWS(Ncounter).Name = Range(NewName(Ncounter)).Value
Next Ncounter