我对此仍然很陌生,并试图找到一种方法来打印我的文件中的特定工作表,并在单击特定单元格(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
您确定要查看该代码吗?您是否使用调试器来检查硬编码范围是否正确?
我不会依赖选择特定的单元格,而是在工作表上放置一个按钮。那么你可以做这样的事情
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 宏掌握