【问题标题】:excel code to print multiple sheets based on formulaexcel代码根据公式打印多张纸
【发布时间】:2026-01-27 12:20:12
【问题描述】:

我必须根据该工作表是否与用户相关,在 Excel 中打印多张工作表。在一个名为“Sheet2”的工作表中,我在单元格 14 的 A 列中有工作表名称。 A 列中有 24 张不同名称的工作表。在每个相邻的单元格(B 列)中,我有 TrueFalse。我希望打印在 B 列中有 True 的工作表。我可以一张一张地打印到工作表上,而不是将所有相关工作表作为一个文件同时打印。我使用的代码如下:

Sub CommandButton1_Click()

Dim wb As Workbook
Dim SheetsToPrint As String
Set wb = ThisWorkbook

Dim sheetWithData As Worksheet
Set sheetWithData = wb.Sheets("Sheet2")

Dim startNameRange, endNameRange As Integer
startNameRange = 14
endNameRange = 39

For i = startNameRange To endNameRange Step 1

Dim nameSheetToPrint As String
SheetsToPrint = sheetWithData.Range("A" & i).Value

Dim wsToPrint As Worksheet
Set wsToPrint = wb.Sheets(SheetsToPrint)

If sheetWithData.Cells(i, 2) = "True" Then
    wsToPrint.PrintOut From:=1, To:=1
End If



Next i

End Sub

【问题讨论】:

  • 请向我们展示您的第一次尝试。
  • 因为这不是免费的代码编写服务,您需要先自己开始。进行一些重新搜索,然后返回您的代码尝试和特定问题。另请参阅No attempt was made
  • 大声笑,你的第一次尝试不应该是我的答案
  • 嗯,是的,这实际上是我的第一次尝试。当我有一个部分工作的代码时,我为什么要制作一个不同的代码,即使它是你的。如果有人可以提出进一步的改变,那就太好了,否则就是这样。

标签: excel printing vba


【解决方案1】:

调整变量并试试这个:

Sub PrintSheet()

Dim wb As Workbook
Set wb = ThisWorkbook

Dim sheetWithData As Worksheet
Set sheetWithData = wb.Sheets("Sheet2")

'Add the first row number and the last row number where start the sheet name
Dim startNameRange, endNameRange As Integer
startNameRange = 2
endNameRange = 4

For i = 2 To 4 Step 1

    Dim nameSheetToPrint As String
    nameSheetToPrint = sheetWithData.Range("A" & i).Value

    Dim wsToPrint As Worksheet
    Set wsToPrint = wb.Sheets(nameSheetToPrint)

    If sheetWithData.Cells(i, 2) = "True" Then
        wsToPrint.PrintOut
    End If



Next i

End Sub

【讨论】:

  • 谢谢。它可以部分工作,因为它一张一张地打印纸张。我想将这些表打印为一个 pdf。感谢您的任何建议。
最近更新 更多