【发布时间】:2019-12-02 01:59:08
【问题描述】:
我目前正在处理具有多个工作表的工作簿中的宏,旨在根据主工作表中的值显示和隐藏某些工作表。工作表名称也包含在主工作表中,主过程在引用需要显示或隐藏的工作表时查看这些值。此方法的问题在于,如果用户更改工作表选项卡名称,宏将产生错误。我希望插入一个额外的过程,使每个工作表的选项卡名称等于主工作表相应单元格中的值。我想出了以下几点:
Sub SheetName()
If Not ActiveWorkbook Is ThisWorkbook Then Exit Sub
Dim DataImport As Worksheet
Set DataImport = ThisWorkbook.Worksheets("Data Import")
DataImport.Range("A13").Value = Sheet1.Name
End Sub
此代码运行良好,但此工作簿中有大约 100 多个工作表。我想知道是否有更有效的方法来做到这一点,而不是输入相同的程序 100 次。我尝试将工作表代码名称存储在一个数组中,并在数组中循环相同的过程,例如:
Sub test()
Dim DataImport As Worksheet
Set DataImport = ThisWorkbook.Worksheets("Data Import")
Dim index As Long
Dim ws(0 To 2) As Worksheet
Set ws = Array(Sheet1, Sheet2, Sheet3)
For i = 13 To 14
index = i - 13
DataImport.Cells(i, "A").Value = ws(index).Name
Next i
End Sub
但出现错误消息“无法分配给数组”。如果我的代码看起来很垃圾,请提前抱歉,我还是 VBA 新手,还有很多东西要学。
【问题讨论】:
标签: excel vba accounting