Vba 工作表的变量名

Vba 工作表的变量名,vba,excel,Vba,Excel,我想将excel中的工作表命名为“Control”选项卡中单元格“C6”内的值。我是VBA新手,我试着在一个模块上输入这个 Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' ' Macro2 Macro ' ' Dim month As String month = Sheet2.Range("C5") Sheets("Month").Name = month End Sub 此外,我不知道

我想将excel中的工作表命名为“Control”选项卡中单元格“C6”内的值。我是VBA新手,我试着在一个模块上输入这个

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

'
' Macro2 Macro
'

'
    Dim month As String
    month = Sheet2.Range("C5")
    Sheets("Month").Name = month
End Sub
此外,我不知道该名称是否会自动更新。我不想运行宏来更改工作表名称


谢谢

听起来您希望能够始终引用同一工作表,而不管工作表的名称如何更改(如工作表选项卡上所示)

这就是工作表的
代码名
属性派上用场的地方

假设您的工作表有一个对象变量declare,比如
Dim ws As worksheet
。您可以通过三种基本方式参考工作表


…通过
名称
设置对象变量:

Set ws = Sheets("Sheet1")
工作表名称是唯一可以更改为您想要的任何内容的工作表标识符,您可能知道,这样做的方式如下:

ws.Name = "NewSheetname"  
…或者,像:

Sheets("Sheet1").Name = "NewSheetName"  

…按
索引
编号: 索引编号标识工作表“选项卡”相对于其他选项卡的位置(如果不更改工作表的顺序,则无法更改)

设置对象变量:

Set ws = Sheets(1)  
Set ws = Sheet1  
…然后您可以(仍然)更改工作表名称,如:

ws.Name = "NewSheetname"  
ws.Name = "NewSheetname"  
…或者您可以通过引用工作表索引号来更改名称,如:

Sheets(1).Name = "NewSheetName"
注意:如果工作表被移动(或在其前面插入另一个工作表),索引编号将更改因此,它通常不是引用工作表的首选方法


…通过
代码名
: 代码名是Excel在内部引用工作表的方式。它是Excel为工作表提供的原始名称,并且不会更改,因为它是只读属性

设置对象变量:

Set ws = Sheets(1)  
Set ws = Sheet1  
…然后您可以(仍然)更改工作表名称,如:

ws.Name = "NewSheetname"  
ws.Name = "NewSheetname"  
…或者您可以通过引用工作表代码名来更改名称,如:

Sheet1.Name = "NewSheetName"
您可以检查工作表的
代码名
属性,如:

MsgBox Sheets("YourSheetName").CodeName
…或者,如果
ws
已经在引用工作表:

MsgBox ws.CodeName
因此,在您的情况下,您可以随时更改工作表的名称,方法是:

Sheet2.Name = "NewNameHere"
…请继续将其称为
Sheet2


再举一个例子来澄清区别:

  • 创建新工作簿。(它将自动将工作表命名为
    Sheet1
  • 手动(通过双击其选项卡上的名称)或通过编程(使用
    Sheet1.name=“Sheet1999”
    )将工作表名称更改为“Sheet1999”)

  • 现在,如果您想知道该工作表上已使用了多少行,可以使用以下任一方法:

    MsgBox Sheets("Sheet1999").UsedRange.Rows.Count
    
    …或:


关于
工作表与
工作表的对比说明
: 参考工作表时,
工作表和
工作表通常可以互换使用,例如,这两行的作用是相同的:

Worksheets("mySheet").Calculate

Sheets("mySheet").Calculate
区别在于:

  • 工作表
    对象在
    工作表
    集合
    中搜索匹配的名称、索引或代码名

  • 工作表
    对象在
    工作表
    集合**和
    图表
    集合**中搜索匹配的名称、索引或代码名

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

因此,永远不要将图表命名为与工作表相同的名称,这样您就不必担心它,并且可以在任何时候引用
工作表时继续保存4次击键。
…)


更多信息:
  • MSDN:

  • MSDN:

  • MSDN:

  • MSDN:


听起来您希望能够始终引用同一工作表,而不管工作表的名称如何更改(如工作表选项卡上所示)

这就是工作表的
代码名
属性
派上用场的地方

假设您的工作表有一个对象变量declare,比如
Dim ws As worksheet
。您可以通过三种基本方式参考工作表


…通过
名称
设置对象变量:

Set ws = Sheets("Sheet1")
工作表名称是唯一可以更改为您想要的任何内容的工作表标识符,您可能知道,这样做的方式如下:

ws.Name = "NewSheetname"  
…或者,像:

Sheets("Sheet1").Name = "NewSheetName"  

…按
索引
编号: 索引编号标识工作表“选项卡”相对于其他选项卡的位置(如果不更改工作表的顺序,则无法更改)

设置对象变量:

Set ws = Sheets(1)  
Set ws = Sheet1  
…然后您可以(仍然)更改工作表名称,如:

ws.Name = "NewSheetname"  
ws.Name = "NewSheetname"  
…或者您可以通过引用工作表索引号来更改名称,如:

Sheets(1).Name = "NewSheetName"
注意:如果工作表被移动(或在其前面插入另一个工作表),索引编号将更改因此,它通常不是引用工作表的首选方法


…通过
代码名
: 代码名是Excel在内部引用工作表的方式。它是Excel为工作表提供的原始名称,并且不会更改,因为它是只读属性

设置对象变量:

Set ws = Sheets(1)  
Set ws = Sheet1  
…然后您可以(仍然)更改工作表名称,如:

ws.Name = "NewSheetname"  
ws.Name = "NewSheetname"  
…或者您可以通过引用工作表代码名来更改名称,如:

Sheet1.Name = "NewSheetName"
你可以检查一个工作表