Arrays VBA使用代码在电子表格中选择多个选项卡

Arrays VBA使用代码在电子表格中选择多个选项卡,arrays,excel,vba,worksheet,Arrays,Excel,Vba,Worksheet,我有一个有3个标签的电子表格。我需要以下代码来选择前两个选项卡。我几乎有了它,但是工作表(数组(c)).Select部分返回一个错误。基本上,我需要最后一部分作为图纸返回(数组(“Sheet1”、“Sheet2”)。选择 Sub-HideUnhide2() 像线一样变暗 双倍调暗b 作为字符串的Dim c Application.Calculation=xlManual 对于I=1到100 如果范围(“d5”)“实体:”则退出 “开始 c=c&“,”&Chr(34)&ActiveSheet.Na

我有一个有3个标签的电子表格。我需要以下代码来选择前两个选项卡。我几乎有了它,但是
工作表(数组(c)).Select部分返回一个错误。基本上,我需要最后一部分作为图纸返回(数组(“Sheet1”、“Sheet2”)。选择

Sub-HideUnhide2()
像线一样变暗
双倍调暗b
作为字符串的Dim c
Application.Calculation=xlManual
对于I=1到100
如果范围(“d5”)“实体:”则退出
“开始
c=c&“,”&Chr(34)&ActiveSheet.Name&Chr(34)
"完!
b=b+1
ActiveSheet.Next.Select
接下来我
"完"
c=右(c,透镜(c)-2)
MsgBox c
图纸(阵列(c))。选择
Application.Calculation=xlAutomatic
MsgBox“总标签更新=”&b
端接头
非常感谢您的帮助。

这个怎么样

Sub SelectTabs()

    Dim numSheets As Integer
    numSheets = 5
    Dim aSheets() As String
    ReDim aSheets(numSheets - 1)

    For i = 0 To numSheets - 1
        aSheets(i) = ActiveWorkbook.Worksheets(i + 1).Name
    Next i

    ActiveWorkbook.Worksheets(aSheets()).Select

End Sub
用于指定是否要添加或替换当前选择:

Dim ws as Worksheet, replaceSelection As Boolean
replaceSelection = True

For Each ws In ThisWorkbook.Worksheets
    If ws.Range("d5") = "Entity:" Then
       ws.Select Replace:=replaceSelection
       replaceSelection = False
    End If
Next
要选择从当前图纸开始,请执行以下操作:

Dim ws as Worksheet, replaceSelection As Boolean
replaceSelection = True

While Not ws Is Nothing
    If ws.Range("d5") = "Entity:" Then
       ws.Select Replace:=replaceSelection
       replaceSelection = False
    End If
    Set ws = ws.Next
Wend

我发布的代码是复杂循环的简化版本,需要在多个具有不同选项卡数量的电子表格中使用。基本上,我需要代码来检查一个选项卡在单元格D5中是否有值“Entity:”,如果是,则将其与符合此条件的所有其他选项卡一起选择。如果选项卡数量始终固定,则建议的解决方案有效,但如果选项卡数量继续更改,则可能无效。请看我的原始帖子,我用完整的代码修改了简单的版本。@BillSingh我不认为“电子表格”意味着你认为它的功能。对象模型调用它们
工作簿
工作表
是“电子表格”中的“选项卡”。@Mat'smugh我不明白。你能详细说明一下吗?我的问题实际上在于如何将字符串传递给数组,问题在于代码表的最后一行(数组(c))。选择。如果您对此有什么看法,请告诉我。@BillSingh您说“电子表格”是指
工作簿
,但“工作表”是指
工作表
的API概念。我的意思是,您的词语选择令人困惑,您应该使用API使用的术语,以便每个人都能清楚地理解您的意思。@SEarle1986您可以修改此代码,使其从当前选定的工作表循环并向右移动吗?为什么需要选择它们?你在每一张选定的纸上都做些什么吗?学习宏录制器。使用宏记录器。我喜欢宏录音机。这是我能给你的最好的礼物。@Slai yes I我有多个电子表格,它们的标签基本上是彼此的镜像。我需要选择全部并更新。然后你可以不选择它们而更新它们。我看不出有必要选择它们。如果我尝试执行第二个代码,它会询问我要执行哪个宏。我得到一个弹出框,其中有一个所有宏的列表。我做错了什么?我将此代码存储在电子表格的模块中。@BillSingh VBA无法猜测要运行的宏,除非光标位于方法中
Dim ws as Worksheet, replaceSelection As Boolean
replaceSelection = True

While Not ws Is Nothing
    If ws.Range("d5") = "Entity:" Then
       ws.Select Replace:=replaceSelection
       replaceSelection = False
    End If
    Set ws = ws.Next
Wend