Excel 2013 中的扩展工作表选择 - VBA

Mal*_*ata 5 excel vba

您能否帮助理解为什么此代码在旧版本的 Excel 中有效,但在 Excel 2013 中无效?行replace:=false被忽略。是否与一些中心设置有关?应该修改什么?

Sub test()
    Dim i
    Dim n

    n = InputBox("type n")

    For i = 1 To n
        If i = 1 Then ThisWorkbook.Sheets(i).Select
        If i > 1 Then ThisWorkbook.Sheets(i).Select Replace:=False
    Next i
End Sub
Run Code Online (Sandbox Code Playgroud)

小智 0

我在 Excel 2013 中尝试了您的代码。可能的原因可能是 ThisWorkbook 不是活动工作簿或工作表不可见。您应该只在活动工作簿上使用选择功能。请参阅下面更新的代码 - 我在带有隐藏工作表的工作簿中使用了它并且它有效。查看 VBA 编辑器 (Ctrl+G) 中的即时窗口以查看调试消息。请注意,隐藏的工作表也适用于变量“n”。希望能帮助到你。

Sub test()
    Dim i
    Dim n
    Dim foundFirstVisSheet As Boolean
    foundFirstVisSheet = False

    n = InputBox("type n")
    Dim mySh As Worksheet


    For i = 1 To n

        Set mySh = ActiveWorkbook.Sheets(i)
        If mySh.Visible = xlSheetVisible Then
            If Not foundFirstVisSheet Then
                foundFirstVisSheet = True
                mySh.Activate
            End If
            Debug.Print mySh.Name & " is visible"
            mySh.Select Replace:=False
        Else
            Debug.Print mySh.Name & " is invisible and cannot be selected"
        End If

    Next i
End Sub
Run Code Online (Sandbox Code Playgroud)