【发布时间】:2016-08-02 15:09:24
【问题描述】:
我的一段代码已经运行了 3 年多。 2016 年 7 月 28 日突然停止工作。
非常很简单,我希望它是一个简单的解决方案(或者可能是 Microsoft 更新破坏了它)
ThisWorkbook.Sheets(1).Select
ThisWorkbook.Sheets(2).Select (False) ' like holding ctrl
这将始终选择 Sheet #1 和 Sheet #2。现在似乎“(False)”不起作用,它只会选择Sheet#1。我已经在 5 台不同的计算机上尝试过这个(所有 Excel 2013)请让我知道发生了什么。
谢谢! -迈克
编辑: 这也不再起作用了。就像乔丹在 cmets 中所说的那样,它只是不执行。
y = 9
ThisWorkbook.Sheets(1).Select
For y = 2 To x
ThisWorkbook.Sheets(y).Select (False) ' like holding ctrl
Next y
编辑2: 由于似乎没有明确的答案,我会问是否有人可以帮助我解决问题:
ThisWorkbook.Sheets(Array(1 to x)).ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
FolderName & "\" & QuoteFilename, Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False
显然这是行不通的,但它应该能说明我的意思。
解决方案:
感谢 Ralph,我摘录了一些内容并创建了这个:
Private Sub Tester()
x = 5
ReDim SheetstoSelect(1 To x) As String
For y = 1 To x
SheetstoSelect(y) = ThisWorkbook.Sheets(y).Name
Next y
ThisWorkbook.Sheets(SheetstoSelect).Select
End Sub
这会从 1-5 中选择实际的工作表#,并允许定义工作表以按实际工作表顺序进行选择。
仍然不知道最初问题的根源,但解决方法也一样好。
【问题讨论】:
-
如果没有
False周围的括号,它是否可以工作?一定有什么改变?你有一个 Office 更新,操作系统更新,你不再有两张表吗? -
您是否收到错误消息?您是否尝试过使用 Array("Sheet1","Sheet2") 进行测试?
-
我猜他们在更新中破坏了一些东西,正如@GaryEvans 提到的那样。
-
自己试了下代码,基本上只选择了
Sheet(1),第二条语句什么都不做。 -
仅供参考 - 高度推荐给avoid using
.Select