2016-02-20 58 views
3

我写如果用户选择一个复选框,包括该板在PDF报告,以打造基于字符串表的列表一些代码。请看下图:选择多个Excel表导出为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 - - 如果我尝试输入字符串值直接在它的工作原理(我也验证一切都正确拼写)

附加注意然而,这并不让我随时可变。

回答

1

您正在构建一个逗号分隔的字符串,您必须将其转换为数组。你是非常接近

Sub BuildAString() 
    Dim PDFsheets As String 
    Dim s As Worksheet 
    PDFsheets = "Sheet1,Sheet2,Sheet3" 
    ary = Split(PDFsheets, ",") 

    Sheets(ary).Select 
    Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
      "C:\TestFolder\Book1.pdf", Quality:=xlQualityStandard, _ 
      IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ 
      True 
End Sub 

注意这使得 PDF文件的所有三个表。如果你想要单独的文件,你可以使用循环。
请注意,PDFsheets中没有空格,因为我的工作表名称中没有空格。

+0

我仍然得到下标超出范围的错误。另一个想法可能会导致问题是该工作簿有多个窗口。我已经尝试在选择行之前为每个不同的窗口添加一个'Windows(“WindowName”)。Activate',但是无论如何都会得到相同的错误。 – SincereApathy

+0

@SincereApathy **请注意,我没有在表格名称字符串中包含空格字符** ..................您的标签名称可能不会** **以空格字符开头! –

+0

我已经试过了这两种方法,目前已删除空间。 – SincereApathy