我有一个配方单元格,其中包含一个字符串,仅指定我想在某些条件下修改某个单元格的工作表:
注意: 工作表“Total”和“Test1”到“Test20”具有相同的格式(我有更多不同名称和格式的工作表,我根本不想修改)。
假设我要在工作表“Total”,“Test2”,“Test7”和“Test12”中修改单元格A5
一个隐藏的配方单元格(比如说B50)已经公式化,以获得以下文本字符串:“Array(”Total“,”Test2“,”Test7“,”Test12“)”。我将此值分配给变量,期望它成为vba代码的一部分,其中Sheets(SheetNamesList).Select实际上可以是Sheets(Array(“Total”,“Test2”,“Test7”,“Test12”))。选择
我收到一个Suscript超出范围错误,并且调试时突出显示[Sheets(SheetNamesList).Select]行。
以下是我的代码。感谢您的评论
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
答案 0 :(得分:0)
正确的syntax是Sheets(Array("Sheet4", "Sheet5")).Select
,但您使用的是最有可能是字符串的单元格的值。您需要将该字符串转换为Sheets
Dim SheetNameArray As Variant
Dim Counter As Integer
SheetNameArray = Split(Worksheets("Names").Range("B50").Value, ",")
Sheets(SheetNameArray).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