如何在更改工作表名称时使宏工作

时间:2014-10-23 14:28:52

标签: excel excel-vba vba

即使有人更改了Sheet1,Sheet2等选项卡的名称,我如何制作它以便我的宏可以在电子表格上工作。

例如我的代码中的这个片段:

Set MyWorkbook = Workbooks.Open(DataDialog.SelectedItems(Counter))
Set MySheet = MyWorkbook.Worksheets("Sheet1")

获取运行时错误“9”:

  

下标超出范围

问题是我需要这个宏能够在具有不同命名选项卡的多个不同工作簿上使用,并且在很多情况下,选项卡将被隐藏,看起来像Sheet1的是Sheet3。 有没有办法单独在活动工作表上使用宏?

1 个答案:

答案 0 :(得分:4)

是的,你不必硬编码“Sheet1”。相反,你可以这样做:

方法1: 声明变量

Dim sName as string
sName = Activesheet.Name

然后你可以在变量sName中使用name而不是硬编码。

方法2: 您可以使用工作表索引

sName = Sheets(1).Name

其中1表示工作簿中的索引页数。

因此,当工作表名称更改时,您可以使用上述两种方法中的任何一种来获取工作表的名称。