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

5

请帮忙理解为什么这段代码在旧版本的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

3
显然这是一个最近出现的错误。在2016年及之前的版本中,它可以正常工作。链接是有关此问题的讨论。 - GSerg
1
可能是重复的问题:ThisWorkbook.Sheets(1).Select (False) Not Working - Ralph
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接