VBA从for循环返回下一个值

我需要使用For循环中的每个值填充单元格。 我有一个包含员工姓名和员工ID的工作表。 我试图填充另一个工作表上的单元格,并打印到默认打印机(或PDF首选),然后对列表中的下一名员工做同样的事情。

任何帮助是极大的赞赏。 我目前只返回第一个员工的名字,没有ID。

 Sub btn_CompleteForm() Dim Rng As Range, cell As Range, EmpName As Range Set NameRng = Range("Employees!A2:Employees!A10") Set IDRng = Range("Employees!B2:Employees!B10") Set EmpName = Range("ActionNotice!D7") Set EmpID = Range("ActionNotice!D8") For Each cell In NameRng EmpName = NameRng.Value EmpID = IDRng.Value ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False MsgBox "Next" Next cell End Sub 

这应该只需要一个简单的修复。 将EmpName = NameRng.Value更改为EmpName = cell.Value您正在循环cellNameRng ,而不是通过NameRng循环。

 Sub btn_CompleteForm() Dim Rng As Range, cell As Range, EmpName As Range With Worksheets("ActionNotice") For Each cell In Range("Employees!A2:Employees!A10") .Range("D7") = cell.value 'Name .Range("D8") = cell.Offset(0, 1).value 'ID ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False MsgBox "Next" Next cell End With End Sub 
  For Each cell In NameRng EmpName = NameRng.Value EmpID = IDRng.Value ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False MsgBox "Next" Next cell 

应该

  For nRow = 1 to NameRng.Count EmpName.Value = NameRng.Cells(nRow,1).Value EmpID.Value = IDRng.Cells(nRow,1).Value ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False MsgBox "Next" Next nRow