打印包含内容页面中单元格数量的特定工作表

问题描述 投票:0回答:1

我对此仍然很陌生,并试图找到一种方法来打印我的文件中的特定工作表,并在单击特定单元格(c21)时在主工作表上输入数量。 总而言之,我有一个主工作表,其中列出了 b 列中带有工作表名称的工作表 - 这些工作表具有单击单元格时指向工作表的链接。 单击远离工作表时,工作表将被停用。 在主透明板上有一个相应的列,其中包含打印所需的数量(d 列)。 这取决于打印时需要每张纸的数量。 我希望代码打印内容页中的每张纸(b 列),并在 d 列中输入数量,忽略任何零。

这是我输入的代码 - 它可能很长而且很奥特! ** 目前它没有从主表中获取数量** 所以我显然做错了什么!

如果 Selection.Count = 1 那么 如果不相交(目标,范围(“c21”))则什么都不是

        Sheets("Health & Safety File 1").Visible = True
    Sheets("Sign In Sheets").Visible = True
    Sheets("Induction Forms").Visible = True
    Sheets("Visitors Induction Forms").Visible = True
    Sheets("Induction Presentation").Visible = True
    Sheets("Toolbox Talk Confirmation").Visible = True
    
    Sheets("Sign In Sheets").PrintOut copies:=ActiveWorkbook.Sheets("Health & Safety File 1").Range("d8").Value, collate:=True
    Sheets("Induction Forms").PrintOut copies:=ActiveWorkbook.Sheets("Health & Safety File 1").Range("d10").Value, collate:=True
    Sheets("Visitors Induction Forms").PrintOut copies:=ActiveWorkbook.Sheets("Health & Safety File 1").Range("d12").Value, collate:=True
    Sheets("Induction Presentation").PrintOut copies:=ActiveWorkbook.Sheets("Health & Safety File 1").Range("d14").Value, collate:=True
    Sheets("Toolbox Talk Confirmation").PrintOut copies:=ActiveWorkbook.Sheets("Health & Safety File 1").Range("d18").Value, collate:=True
    
    Sheets("Sign In Sheets").Visible = False
    Sheets("Induction Forms").Visible = False
    Sheets("Visitors Induction Forms").Visible = False
    Sheets("Induction Presentation").Visible = False
    Sheets("Toolbox Talk Confirmation").Visible = False
    
    End If
  End If
excel vba printing
1个回答
0
投票

您确定要查看该代码吗?您是否使用调试器来检查硬编码范围是否正确?

我不会依赖选择特定的单元格,而是在工作表上放置一个按钮。那么你可以做这样的事情

Sub demo_Click()

    Dim rng As Range
    Set rng = Sheets("Health & Safety File 1").Range("B2:D30")
    'Change the range above to suit your actual scenario
    
    Dim arr As Variant
    arr = rng.Value
    'If you examine arr in the watch window, observe that it is now a base 1, 3D array

    'Work your way through the array doing what you need to do...
    Dim x As Long
    For x = 1 To UBound(arr)
        'The sheet names are in arr(x, 1)
        If Len(arr(x, 1)) > 0 Then
            'Make the sheet visible (why?)
            Sheets(arr(x, 1)).Visible = True
            
            'The copies required are in arr(x,3)
            Dim NoCopies As Integer
            NoCopies = arr(x, 3)
        
            If NoCopies > 0 Then
                Sheets(arr(x, 1)).PrintOut copies:=NoCopies, Collate:=True
            End If
        
            'Make the sheets invisible
            Sheets(arr(x, 1)).Visible = False
        
        End If
    Next
End Sub

查看我的代码中的注释,了解发生了什么或观看 Paul Kelly 的这段视频 Excel 宏掌握

© www.soinside.com 2019 - 2024. All rights reserved.