在打印每行的副本之前,最后一行和发送单元格范围的值
我发现下面的代码,模拟MS Word邮件合并function,但专门在Excel单元格中。
它的目的是打印一个范围内的每一行的单个单元格值,以便在打印之前将其发送到另一个单元格,以便可以打印多个副本,每个副本具有不同的名称以便合理化,例如将打印时间卡分发给每个员工。
然而,我还没有能够找出如何应用这个发送一个范围的三个单元格(在Employees列表中的A:C
列)到另一个范围的三个单元格( X50:X52
Sheet1
X50:X52
,而不是一个细胞。任何想法?
Sub Macro1() Dim lastRow As Integer ' Dim r As Integer lastRow = Sheets("Employees").Cells(Rows.Count, "A").End(xlUp).Row For r = 1 To lastRow Sheets("Sheet1").Range("D1").Value = Sheets("Employees").Range("A" & r).Value ActiveWindow.SelectedSheets.PrintOutNext r End Sub
您可以使用Application.Transpose
将该行数据翻转成一列数据。 下面我也使用Resize
从列A:C
获取3个单元格。 Resize
要比尝试用&
和列字母构build范围容易得多。 它返回一个新的Range
,它是3列大,而不是以前的1列。
Sub Macro1() Dim lastRow As Integer ' Dim r As Integer lastRow = Sheets("Employees").Cells(Rows.Count, "A").End(xlUp).Row For r = 1 To lastRow Sheets("Sheet1").Range("X50:X52").Value = _ Application.Transpose(Sheets("Employees").Range("A" & r).Resize(, 3).Value) ActiveWindow.SelectedSheets.PrintOutNext r Next r End Sub
请注意,使用Range
select多个单元格并调用.Value
,您将获得一组值。 在这种情况下,数组是1行3列。 Application.Transpose
将此数据转换为3行1列。