使用RefEdit Userform复制列单元格数据

时间:2015-04-09 14:04:21

标签: excel-vba vba excel

我试图将大量信息从一个电子表格复制到另一个电子表格,以便更容易在一张纸上打印出来。所有数据按顺序和列列出,需要按原样打印。

我尝试创建用户表单以通过复制不同的列范围并将它们以完全相同的格式粘贴到另一个电子表格中来加快速度,但是每个纸张的列数为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

非常感谢任何帮助。

1 个答案:

答案 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

编辑:我继续创建了一个虚拟示例来测试它:

workbooks

单击按钮并粘贴

click