我想在excel中将工作表命名为“控件”选项卡中“ C6”单元格中的值。我是VBA的新手,我尝试在模块上键入此内容。
const f = new FooImpl();
Expected 1 arguments, but got 0.
此外,我不知道该名称是否会自动更新。我不想运行宏来更改工作表名称...
谢谢!
答案 0 :(得分:3)
听起来好像您希望能够始终引用同一工作表,而不管工作表的名称如何更改(如工作表的选项卡所示)。
这是工作表的 CODENAME
属性派上用场的地方。
假设您为工作表声明了一个对象变量,如Dim ws As Worksheet
。您可以通过三种基本方法来引用工作表。
...来自
Name
:设置对象变量:
Set ws = Sheets("Sheet1")
工作表名称是唯一可以更改为所需名称的工作表标识符,(您可能已经知道)可以完成以下操作:
ws.Name = "NewSheetname"
...或者,例如:
Sheets("Sheet1").Name = "NewSheetName"
...按
Index
的号码:与其他索引相比,索引号标识工作表“标签”的位置(并且不能更改工作表的顺序而不能更改)
设置对象变量:
Set ws = Sheets(1)
...然后,您可以(仍然)更改工作表名称,例如:
ws.Name = "NewSheetname"
...或者您可以通过引用工作表索引号来更改名称,例如:
Sheets(1).Name = "NewSheetName"
注意::如果移动了工作表(或在其之前插入了另一个工作表),索引号将更改!因此,通常不是首选的引用方法到工作表。
...来自
CodeName
:CodeName是Excel在内部引用工作表的方式。这是Excel赋予工作表的原始名称,由于它是只读属性,因此不会更改。
设置对象变量:
Set ws = Sheet1
...然后,您可以(仍然)更改工作表名称,例如:
ws.Name = "NewSheetname"
...或者您可以通过引用工作表代号来更改名称,例如:
Sheet1.Name = "NewSheetName"
您可以检查工作表的
CodeName
属性,例如:MsgBox Sheets("YourSheetName").CodeName
...或者,如果
ws
已经在引用工作表:MsgBox ws.CodeName
因此,根据您的情况,您可以使用以下命令随时更改工作表的名称:
Sheet2.Name = "NewNameHere"
...只要继续将其称为Sheet2
。
再一个例子以说明区别:
Sheet1
的工作表。)手动(通过双击其选项卡上的名称)或以编程方式(使用Sheet1.Name="Sheet1999"
)将工作表名称更改为“ Sheet1999”
现在,如果要查找已使用的工作表上的行数,请使用以下任一方法:
MsgBox Sheets("Sheet1999").UsedRange.Rows.Count
...或:
MsgBox Sheet1.UsedRange.Rows.Count
关于
Sheets
与Worksheets
的注释:
在引用工作表Sheets
和Worksheets
时通常可以互换使用,例如,这两行所做的相同的事情:
Worksheets("mySheet").Calculate
Sheets("mySheet").Calculate
区别是:
Worksheets
对象在 Worksheets
集合中搜索匹配的 Name , Index 或 CodeName 。
Sheets
对象在 Worksheets
集合**和 Charts
集合**中搜索匹配的名称,索引或 CodeName 。
因此,唯一的问题是如果您具有同名图表和工作表。
因此,永远不要将图表命名为与工作表相同的名称,这样您就不必担心它了,只要您引用一个图表即可继续保存4次击键。 Sheet
...:)
MSDN:Worksheet
Object
MSDN:Worksheet
Properties
MSDN:Worksheet
Methods
MSDN:Sheets
Object