我试图将大量信息从一个电子表格复制到另一个电子表格,以便更容易在一张纸上打印出来。所有数据按顺序和列列出,需要按原样打印。
我尝试创建用户表单以通过复制不同的列范围并将它们以完全相同的格式粘贴到另一个电子表格中来加快速度,但是每个纸张的列数为50个单元格和最多4列
这是我到目前为止所获得的,但它只复制了第一个单元格:
Private Sub UserForm_Click()
UserForm1.RefEdit1.Text = Selection.Address
End Sub
Private Sub CommandButton1_Click()
Dim addr As String, rng
Dim tgtWb As Workbook
Dim tgtWs As Worksheet
Dim icol As Long
Dim irow As Long
Set tgtWb = ThisWorkbook
Set tgtWs = tgtWb.Sheets("Sheet1")
addr = RefEdit1.Value
Set rng = Range(addr)
icol = tgtWs.Cells(Rows.Count, 1) _
.End(xlUp).Offset(0, 0).Column
tgtWs.Cells(1, icol).Value = rng.Value
End Sub
非常感谢任何帮助。
答案 0 :(得分:0)
您输出数据的方法仅引用单个单元格。您使用的.Cells(1,icol)
仅引用单个单元格(第1行和单列)。
为了将数据输出到更大的范围,您需要引用更大的范围。最简单的方法是使用RefEdit范围的大小通过Resize()
。
我相信这对你有用。我更改了最后一行以包含对Resize
的调用。
Private Sub CommandButton1_Click()
Dim addr As String, rng
Dim tgtWb As Workbook
Dim tgtWs As Worksheet
Dim icol As Long
Dim irow As Long
Set tgtWb = ThisWorkbook
Set tgtWs = tgtWb.Sheets("Sheet1")
addr = RefEdit1.Value
Set rng = Range(addr)
icol = tgtWs.Cells(Rows.Count, 1) _
.End(xlUp).Offset(0, 0).Column
tgtWs.Cells(1, icol).Resize(rng.Rows.Count, rng.Columns.Count).Value = rng.Value
End Sub
编辑:我继续创建了一个虚拟示例来测试它:
单击按钮并粘贴