我找到了以下代码来模拟MS Word邮件合并功能,但只能在Excel单元格中使用。
打算在打印前将一个范围内的每一行的单个单元格值用于发送到另一个单元格,以便可以打印多个副本,每个副本上都有不同的名称用于合理化,例如打印时间卡分发给每个员工。
但是,我无法弄清楚如何将此应用于从每个行向另一个范围发送一系列三个单元格(在Employees表的 A:C
列中) X50:X52
中的三个单元格( Sheet1
,而不仅仅是一个单元格。有任何想法吗?
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
答案 0 :(得分:1)
您可以使用Application.Transpose
将数据行翻转为一列数据。下面我还使用Resize
从A:C
列中获取3个单元格。 Resize
比尝试使用&
和列字母构建范围容易得多。它返回一个新的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
选择多个单元格并调用.Value
时,您将获得一组值。在这种情况下,阵列是1行乘3列。 Application.Transpose
将此数据转换为3行1列。