ThisWorkbook.Sheets(1).Select(False)Not Working
我有一段代码已经运行了3年多了。 突然在2016年7月28日,它停止工作。
这是非常简单的,我希望这是一个简单的解决scheme(或者微软更新可能会破坏它)
ThisWorkbook.Sheets(1).Select ThisWorkbook.Sheets(2).Select (False) ' like holding ctrl
这将始终select工作表#1和工作表#2。 现在看起来“(False)”不起作用,只会selectSheet#1。 我已经在5台不同的电脑上试过这个(所有的Excel 2013)请让我知道是怎么回事。
谢谢! -麦克风
编辑:这也不能工作了。 就像约旦在评论中所说的,它只是不执行。
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
显然这不起作用,但它应该得到我的观点。
解:
感谢拉尔夫,我采取了一些摘录,并创造了这个:
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中select实际的工作表编号,并允许通过实际工作表顺序来定义工作表。
仍然不知道最初的问题的根源,但解决方法是一样的好。
以下代码行将select
工作簿中的所有工作簿,这些工作簿是从以下位置调用的:
Option Explicit Public Sub SelectAllSheetsInThisFile() Dim x As Long Dim SheetstoSelect() As String ReDim SheetstoSelect(1 To ThisWorkbook.Worksheets.Count) For x = 1 To ThisWorkbook.Worksheets.Count SheetstoSelect(x) = ThisWorkbook.Worksheets(x).Name Next x ThisWorkbook.Worksheets(SheetstoSelect).Select End Sub
下面的小节将只select
您在原始文章中要求的两张表:
Option Explicit Public Sub SelectYourSheets() Dim SheetstoSelect(1 To 2) As String SheetstoSelect(1) = ThisWorkbook.Worksheets(1).Name SheetstoSelect(2) = ThisWorkbook.Worksheets(2).Name ThisWorkbook.Worksheets(SheetstoSelect).Select End Sub
如果你喜欢把它全部放在一行,那么你也可以使用split
来创build一个像这样的数组:
ThisWorkbook.Worksheets(Split("Sheet1/Sheet3", "/")).Select
这一行代码将select
名称为Sheet1
和Sheet3
两张表。 我select了分隔符/
因为这个字符不能用在表格的名字中。
只是在旁注:我同意@BruceWayne。 你应该尽量避免使用select
(如果可能的话)。
直到八月的第一个星期,我的VBA工作才完成,然后我的PDF只有第一页。 我正在使用类似的方法 – 在那里我select了许多工作表。 我做了一个使用数组的工作。 我的代码是在一个表单中,但我会在这里发布供参考。
Private Sub CommandButton2_Click() Dim PrintArray() As Variant 'I used a form to select with checkboxes which worksheets to print, so this code would go inside the form linked to a command button ReDim Preserve PrintArray(1 To 1) PrintArray(1) = "Sheet 1 Name" j = 1 If Sheet2.Value = True Then 'I used a checkbox to select which worksheets to print, but you could use any conditional statement here j = j + 1 ReDim Preserve PrintArray(1 To j) PrintArray(j) = "Sheet 2 Name" End If If Sheet3.Value = True Then 'I used a checkbox to select which worksheets to print, but you could use any conditional statement here j = j + 1 ReDim Preserve PrintArray(1 To j) PrintArray(j) = "Sheet 3 Name" End If 'You could add as many pages and conditions as you need.... Unload Me 'because I was using a form Sheets(PrintArray).Select 'Creates the PDF file name FileNameforSave = "Name of New File" & ".pdf" 'Save file as a PDF ActiveSheet.ExportAsFixedFormat xlTypePDF, Filename:= _ FileNameforSave, _ Quality:=xlQualityStandard, IncludeDocProperties:= _ True, IgnorePrintAreas:=False, OpenAfterPublish:=True End Sub
今天我有同样的问题。 可能因为我公司的更新时间表而延误; 可能仍然是同样的更新。 我发现你的线程,然后就在实施你的解决方法之前,我发现了一个更简单的:
ThisWorkbook.Sheets(1).Select ThisWorkbook.Sheets(2).Select (False) ' like holding ctrl ThisWorkbook.Sheets(3).Select (False)
不工作了,但是
ThisWorkbook.Sheets(1).Select ThisWorkbook.Sheets(2).Select (False) ' like holding ctrl ThisWorkbook.Sheets(3).Select (False) ThisWorkbook.Sheets(2).Select (False) ' line 2 again; essential sacrifice for the vba-gods.
确实。