[英]Variable name of a worksheet
我想在excel中将工作表命名为名为“控件”的选项卡中单元格“ 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
而且,我不知道该名称是否会自动更新。 我不想运行宏来更改工作表名称。
谢谢!
听起来好像您希望能够始终引用相同的工作表,而不管工作表的名称如何更改(如工作表的选项卡所示)。
这是工作表的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”。
现在,如果要查找已使用了该工作表上的多少行,请使用use:
MsgBox Sheets("Sheet1999").UsedRange.Rows.Count
...要么:
MsgBox Sheet1.UsedRange.Rows.Count
关于
Worksheets
Sheets
与Worksheets
注释:
当引用工作Sheets
, Sheets
和Worksheets
通常可以互换使用,因此例如,这两行做相同的事情 :
Worksheets("mySheet").Calculate
Sheets("mySheet").Calculate
区别在于:
Worksheets
对象在Worksheets
集合中搜索匹配的Name , Index或CodeName 。
Sheets
对象会在Worksheets
Collection **和 Charts
Collection **中搜索匹配的Name , Index或CodeName 。
因此,唯一的问题就是您的图表和工作表的名称相同 。
因此, 永远不要将图表命名为与工作表相同的名称 ,这样您就不必担心它了,只要您引用工作Sheet
...,就可以继续保存4次击键... :)
MSDN: Worksheet
对象
MSDN: Worksheet
属性
MSDN: Worksheet
方法
MSDN: Sheets
对象
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.