使用工作表名称 VBA

使用工作表名称 VBA

我想知道 Excel 中是否有任何工作表指示器。假设我有 VBA 代码,该代码在某个时候使用工作表名称,然后我更改了工作表的名称,因此我也需要在代码中更改此名称。有没有办法使用工作表指示器,这样我就不必在代码中更改此名称?或者有没有其他方法可以在代码中使用工作表而不使用其名称?

感谢您的帮助。

答案1

根据具体情况,您有几种选择。

1. 使用常量

您可以在代码顶部声明一个常量,然后只需对该常量进行更改即可影响使用该常量的每个点。而不是使用:

Set shtSheet = sheets("Sheet1")

您可以使用:

Set shtSheet = Sheets(csSource)

自始至终。

使用声明常量Const <name> as <type> = <value>

Sub WorksheetVar()
    Const csSheetName As String = "Test"
    
    Sheets(csSheetName).Range("A1").Value = 1
    Sheets(csSheetName).Range("A2").Value = 2
    Sheets(csSheetName).Range("A3").Value = 3
End Sub

它并不能避免在代码中设置值,但是它确实允许您更轻松地更新它,而不是在代码中搜索所有使用该名称的地方。

2. 使用索引号

每个工作表都有一个编号和一个名称,通常是工作表在标签中的位置。即使工作表名称发生变化,该名称仍将保持不变,但如果标签顺序发生变化,该名称将发生变化。

3.使用变量

您可以从单元格、另一个宏、输入框等中获取变量。您可以使用它将工作表的名称传递给您的代码。

4. 使用工作表的对象名称

与工作表的显示名称无关,每个工作表都有一个对象名称,通常是首次创建时的名称。如果您查看左侧的项目资源管理器,您会看到每个工作表都列为“Sheet1 (Sheet1)”之类的名称。如果您将 Sheet1 的名称更改为 Test,您将看到Sheet1 (Test)。您可以使用该不变的对象名称根据需要引用工作表,就像它是一个变量一样。

Sub Sheetname()
    Sheet1.Range("A1").Value = 1
    Sheet1.Range("A2").Value = 2
End Sub

我个人不喜欢这种方法,因为很容易混淆哪张纸是哪张,但这对你来说肯定是一种选择。

相关内容