string与工作表名称转换为数组公式(代码)

我有一个公式化的单元格包含一个string只指定工作表,我想在某些条件下修改某些单元格:

注意:工作表“Total”和“Test1”到“Test20”具有相同的格式(我有更多不同名称和格式的工作表,我根本不想修改)。

假设我想修改工作表“Total”,“Test2”,“Test7”和“Test12”中的单元格A5,

一个隐藏的公式化的单元格(比方说B50)已经被制定为获得以下文本string:“Array(”Total“,”Test2“,”Test7“,”Test12“)”。 我将这个值分配给一个variables,期望它成为Sheets(SheetNamesList).Select实际上可以是Sheets(Array(“Total”,“Test2”,“Test7”,“Test12”))的vba代码的一部分。

我得到一个hover超出范围错误和行[Sheets(SheetNamesList).Select]在debugging时突出显示。

以下是我的代码。 谢谢您的意见

Sub Active_to_Installed() Dim SheetNamesList As String SheetNamesList = Sheets("Names").Range("B50").Value If Range("B50").Value = "A" Then Range("B50").Activate Sheets(SheetNamesList).Select ActiveSheet.Activate Range("A5").Select ActiveCell.FormulaR1C1 = "I" Else Range("A5").Activate Sheets(SheetNamesList).Select ActiveSheet.Activate Range("A5").Select ActiveCell.FormulaR1C1 = "A" End If End sub 

正确的语法是Sheets(Array("Sheet4", "Sheet5")).Select但是你使用的单元格的值最可能是一个string。 您需要将该string转换为Sheets数组

 Dim SheetNameArray As Variant Dim Counter As Integer SheetNameArray = Split(Worksheets("Names").Range("B50").Value, ",") Sheets(SheetNameArray).Select 

实际上,我从来没有同时select多个工作表,而且您将无法拥有多个活动工作表,因此您无法激活。 你也不能一次在这里改变所有的公式。 所以要做到这一点,你需要按照如下方式遍历表单。

 Dim SheetNameArray As Variant Dim Counter As Integer SheetNameArray = Split(Worksheets("Names").Range("B50").Value, ",") For Each s In SheetNameArray Worksheets(s).Range("A5").Formula = "=2+3" Next s Sheets(SheetNameArray).Select 

注意:您需要将B50中的值从Array("Total", "Test2", "Test7", "Test12")更改为Total, Test2, Test7, Test12