1

我有一个公式化的单元格,其中包含一个字符串,仅指定我想在某些条件下修改某些单元格的工作表:

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

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

一个隐藏的公式化单元格(比如 B50)已被公式化以获取以下文本字符串:“Array("Total", "Test2", "Test7", "Test12")"。我将此值分配给一个变量,希望它成为 vba 代码的一部分,其中 Sheets(SheetNamesList).Select 实际上可以是 Sheets(Array("Total", "Test2", "Test7", "Test12")).Select

我收到一个 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
4

1 回答 1

0

正确的语法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

于 2013-10-23T18:34:50.907 回答