【问题标题】:Selecting multiple sheets in VB在VB中选择多个工作表
【发布时间】:2016-11-02 12:03:47
【问题描述】:

我想选择多张纸来打印书中除一张以外的所有纸,到目前为止我的代码看起来像这样,通过宏记录:

Sub Print_All()
  '
  ' Print_All Macro

    Sheets(Array("Class List", "Blank1", "Blank2", "Blank3", "Blank4", "Blank5", "Blank6" _
        , "Blank7", "Blank8", "Blank9", "Blank10", "Blank11", "Blank12", "Blank13", "Blank14", _
        "Blank15", "Blank16", "Blank17", "Blank18", "Blank19", "Blank20", "Blank21", "Blank22" _
        , "Blank23", "Blank24")).Select
    Sheets("Blank2").Activate
    Sheets(Array("Blank25", "Blank26", "Blank27", "Blank28", "Blank29", "Blank30")). _
        Select Replace:=False
    Sheets(Array("Blank1", "Blank2", "Blank3", "Blank4", "Blank5", "Blank6", "Blank7", _
        "Blank8", "Blank9", "Blank10", "Blank11", "Blank12", "Blank13", "Blank14", "Blank15", _
        "Blank16", "Blank17", "Blank18", "Blank19", "Blank20", "Blank21", "Blank22", "Blank23" _
        , "Blank24", "Blank25")).Select
    Sheets("Blank2").Activate
    Sheets(Array("Blank26", "Blank27", "Blank28", "Blank29", "Blank30")).Select _
        Replace:=False
    Range("F5:N10").Select
    Selection.PrintOut Copies:=1, Collate:=True
End Sub

它工作正常,但如果我想更改工作表的名称,就会出现问题。它在寻找空白时返回错误。 有没有办法选择工作表而不在代码中命名?

【问题讨论】:

  • 您想选择工作簿中除一张以外的所有工作表,此工作表名称是什么(您不想打印)?

标签: vba excel printing


【解决方案1】:

您始终可以不按名称而是按其索引来引用工作表,例如新创建的工作簿中的 Sheet1 具有索引 1,Sheet2 - 索引 2 等等。

语法如下:yourWorkbook.Sheets(index as integer)

例如:

dim wbk as Workbook
set wbk = ActiveWorkbook

dim i as integer
wbk.Sheets(i).Select

编辑: 哦,请注意,工作表有时会在工作簿内或工作簿外被删除或移动。给定工作表的 indeces 不一定与它们在工作簿中的顺序相关。要检查您需要的工作表的数量,您可以尝试失败或使用以下循环

dim n as integer
for n = 1 to wbk.Sheets.count
    debug.print "index " & i, wbk.Sheets(i).name
next n

【讨论】:

  • 哦,请注意,工作表有时会在工作簿内或工作簿外被删除或移动。给定工作表的 indeces 不一定与它们在工作簿中的顺序相关。要检查您需要的工作表的数量,您可以尝试失败或使用以下循环
  • `dim n as integer
猜你喜欢
  • 1970-01-01
  • 2021-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-10
  • 1970-01-01
相关资源
最近更新 更多