您能否帮助理解为什么此代码在旧版本的 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)