工作表的变量名

时间:2018-07-18 10:10:33

标签: excel vba excel-vba

我想在excel中将工作表命名为“控件”选项卡中“ C6”单元格中的值。我是VBA的新手,我尝试在模块上键入此内容。

const f = new FooImpl();
Expected 1 arguments, but got 0.

此外,我不知道该名称是否会自动更新。我不想运行宏来更改工作表名称...

谢谢!

1 个答案:

答案 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
    

  

关于SheetsWorksheets的注释:

在引用工作表SheetsWorksheets通常可以互换使用,例如,这两行所做的相同的事情

Worksheets("mySheet").Calculate

Sheets("mySheet").Calculate

区别是:

  • Worksheets对象在 Worksheets集合中搜索匹配的 Name Index CodeName

  • Sheets对象在 Worksheets集合**和 Charts集合**中搜索匹配的名称索引 CodeName

因此,唯一的问题是如果您具有同名图表和工作表

因此,永远不要将图表命名为与工作表相同的名称,这样您就不必担心它了,只要您引用一个图表即可继续保存4次击键。 Sheet ...:)


更多信息: