在用VBA实现多工作表逆序打印的代码执行时,总是报告数组越界!,调试后,发现原来多选的工作表只剩下一个工作表了!,不知道如何防止printout方法
改变Excel 工作表的选择状态?
代码如下:
For i = ActiveWindow.SelectedSheets.Count To 1 Step -1
If xYesorNo = vbYes Then
For xPage = Int(xStartPage) To xTotalPages Step 2
ActiveWindow.SelectedSheets(i).PrintOut from:=xPage, To:=xPage
Next
Else
Exit Sub
End If
Next
应该用数组先存选中的Sheet的Name,打印时通过存储的Sheet Name获取sheet后打印。
题主要的代码如下,有帮助麻烦点个采纳【本回答右上角】,谢谢~~有其他问题可以继续交流~
'用数组存选中的Sheet Name
Dim selectedSheets()
Count = ActiveWindow.selectedSheets.Count - 1
ReDim selectedSheets(Count)
For i = 1 To ActiveWindow.selectedSheets.Count
selectedSheets(i - 1) = ActiveWindow.selectedSheets(i).Name
Next
'打印对应的Sheet
For i = 0 To Count
If xYesorNo = vbYes Then
For xPage = Int(xStartPage) To xTotalPages Step 2
Sheets(selectedSheets(i)).PrintOut from:=xPage, To:=xPage
Next
Else
Exit Sub
End If
Next
数组的下标应该是 ActiveWindow.SelectedSheets.Count-1到0的范围。