您能告诉我为什么下面的代码没有选择可见的工作表,而是导致运行时错误。这真让我抓狂。谢谢你的帮助。

Sub SelectSheets1()

    Dim mySheet As Object
    Dim mysheetarray As String

    For Each mySheet In Sheets
        With mySheet
            If .Visible = True And mysheetarray = "" Then
                mysheetarray = "Array(""" & mySheet.Name
            ElseIf .Visible = True Then
                mysheetarray = mysheetarray & """, """ & mySheet.Name
            Else
            End If
        End With
    Next mySheet

    mysheetarray = mysheetarray & """)"
    Sheets(mysheetarray).Select

End Sub

最佳答案

长话短说-当期望数组时,您将给出一个字符串(mysheetarray)。 VBA喜欢达到期望。

长话短说-这是选择所有可见工作表的方式:

Option Explicit

Sub SelectAllVisibleSheets()

    Dim varArray()          As Variant
    Dim lngCounter          As Long

    For lngCounter = 1 To Sheets.Count
        If Sheets(lngCounter).Visible Then
            ReDim Preserve varArray(lngCounter - 1)
            varArray(lngCounter - 1) = lngCounter
        End If
    Next lngCounter

    Sheets(varArray).Select

End Sub

关于vba - 下标超出范围-运行时错误9,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42553560/

10-12 22:29