mxc*_*090 6 excel vba excel-vba
我有一段代码在运行超过3年.突然在2016年7月28日,它停止了工作.
它非常简单,我希望它是一个简单的解决方案(或者微软的更新可能会破坏它)
ThisWorkbook.Sheets(1).Select
ThisWorkbook.Sheets(2).Select (False) ' like holding ctrl
Run Code Online (Sandbox Code Playgroud)
这总是会选择Sheet#1 AND Sheet#2.现在似乎"(False)"不起作用,它只会选择Sheet#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
Run Code Online (Sandbox Code Playgroud)
edit2:由于似乎没有明确的答案,我会问有人可以帮我解决一个问题:
ThisWorkbook.Sheets(Array(1 to x)).ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
FolderName & "\" & QuoteFilename, Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False
Run Code Online (Sandbox Code Playgroud)
显然这不起作用,但它应该得到我的观点.
解:
感谢拉尔夫,我摘了一些摘录并创造了这个:
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
Run Code Online (Sandbox Code Playgroud)
这将从1-5中选择实际的Sheet#,并允许定义工作表以按实际工作表顺序进行选择.
仍然不知道最初问题的根源,但解决方法同样好.
以下代码行将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
Run Code Online (Sandbox Code Playgroud)
以下子内容将只是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
Run Code Online (Sandbox Code Playgroud)
如果您希望将所有内容都放在一行中,那么您还可以使用它split来动态创建一个数组,如下所示:
ThisWorkbook.Worksheets(Split("Sheet1/Sheet3", "/")).Select
Run Code Online (Sandbox Code Playgroud)
这行代码将包含select两张名称为Sheet1和 的工作表Sheet3。我选择分隔符/是因为该字符不能在工作表名称中使用。
附带说明一下:我同意@BruceWayne 的观点。您应该尽量避免select完全使用(如果可能)。
| 归档时间: |
|
| 查看次数: |
6286 次 |
| 最近记录: |