我有一个数据验证列表,其中包含C5单元中学生的姓名。每次我提出一个名字时,它都会在该页面的报告中填写该特定学生的成绩。 (它在报告中使用vlookup)。我需要为所有学生打印这些报告。我目前正在运行一个宏,该宏将复制从另一张纸上的学生列表中挑选出来的名字,然后进行打印。我希望宏在验证列表中运行并自动打印,并一直保持到列表中的姓氏为止。 以下是我目前正在使用的内容。
子PrintAll() ' 'PrintAll每周测试报告宏 '
Range("C5").Select
Sheets("StudentsOne").Select
Range("A3").Select
Selection.Copy
Sheets("Test Report1").Select
Selection.PasteSpecial Paste:=xlPasteValues
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Range("C5").Select
Sheets("StudentsOne").Select
Range("A4").Select
Selection.Copy
Sheets("Test Report1").Select
Selection.PasteSpecial Paste:=xlPasteValues
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Range("C5").Select
Sheets("StudentsOne").Select
Range("A5").Select
Selection.Copy
Sheets("Test Report1").Select
Selection.PasteSpecial Paste:=xlPasteValues
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
并根据有多少研究对象来保持这种状态。它每年都会更改,我会对其进行更新。它的范围是35到50。因此,每年我都会删除或添加更多范围来复制粘贴。我很想让宏仅在列表中运行,然后自己执行打印。现在列表中有41条记录。 (41个名字) 任何帮助表示赞赏。 谢谢
答案 0 :(得分:0)
您可以尝试遵循以下模式:
Sub PrintAll()
Dim Students As Range, student As Range
Set Students = Worksheets("StudentList").Range("A1:A40")
For Each student In Students
Worksheets("StudentsOne").Range("C5") = student
Worksheets("Test Report1").PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
Next student
End Sub
假设:
StudentList
)上有学生列表,用于填充数据验证StudentsOne
是您要粘贴学生姓名(即C5
)的位置Test Report1
注意:
每次运行代码时,您只需要调整Students
范围参考即可。如果一年有50名学生,则将范围参考更改为A1:A50
答案 1 :(得分:0)
正如评论所暗示的那样,您的问题措辞不太清楚。这是我的最佳猜测。
Sub PrintAll() ' ' PrintAll Weekly Tests Report Macro '
Dim r As Range
With Sheets("StudentsOne")
For Each r In .Range("A3", .Range("A" & Rows.Count).End(xlUp))
Sheets("Test Report1").Range("C5").Value = r.Value
Sheets("Test Report1").PrintOut Copies:=1, Collate:=True, ignorePrintAreas:=False
Next r
End With
End Sub