【发布时间】:2016-06-02 06:42:21
【问题描述】:
我编写了一些代码来根据用户是否选中复选框以将工作表包含在 PDF 报告中来构建字符串中的工作表列表。见下文:
If CheckBox1.Value = True Then
PDFsheets = "Sheet11"
End If
If CheckBox2.Value = True Then
If PDFsheets = "" Then
PDFsheets = "Sheet13"
Else
PDFsheets = PDFsheets & ",Sheet13"
End If
End If
If CheckBox3.Value = True Then
If PDFsheets = "" Then
PDFsheets = "Sheet2"
Else
PDFsheets = PDFsheets & ",Sheet2"
End If
End If
例如,当所有 3 个复选框都被选中时,MsgBox PDFsheets 显示结果Sheet11, Sheet13, Sheet2
现在,当我尝试进行多页选择时,我得到运行时错误 9 - 下标超出范围。我尝试过的不同方法包括:
ThisWorkBook.Sheets(PDFsheets).Select
ThisWorkBook.Sheets(Array(PDFsheets)).Select
xPDF() = Split(PDFsheets, ",")
ThisWorkBook.Sheets(xPDF).Select
xPDF() = Split(PDFsheets, ",")
ThisWorkBook.Sheets(Array(xPDF)).Select
xPDF() = Split(PDFsheets, ",")
For i = 0 to Application.CountA(xPDF) - 1
Sheets(xPDF(i)).Select
next i
另外,为了简洁起见,我已经使用 ActiveWorkbook 而不是 ThisWorkBook 尝试了上述所有示例。另外,我已经尝试重写我的字符串构建部分以引用工作表名称而不是上面所有示例的数字。因此,结果不是Sheet11, Sheet13, Sheet2,而是"Sheet11", "Sheet13, "Sheet2",并带有双引号。
我已经查看了此处和其他地方的其他问题和代码示例,它们显示了相同的目标,并且我使用的选择行与他们完全一样,并且我得到了下标超出范围错误。 (我还验证了所有内容都拼写正确)
附加说明如果我尝试直接在其中输入字符串值,它可以工作 - ThisWorkBook.Sheets("Sheet11, Sheet13, Sheet2").Select - 但是,这不允许我保持它的可变性。
【问题讨论】: