使用vba将数据复制到最后使用的列中

问题描述 投票:0回答:3

我已经能够使用VBA成功地将数据复制到最后使用的行。我试图做同样的事情,但是将数据从A1复制到LastColumn2。这是到目前为止我编写的代码:

Sheets("Results").Select
LastColumn = Cells(1, Columns.Count).End(xlToLeft).Column
Range("A1:" & LastColumn & "2").Select
Selection.Copy

调试器突出显示第三行。这只是代码的一部分-所有变量的尺寸均已正确设定。

谢谢!

vba excel-vba excel
3个回答
2
投票

问题是您通过的范围是错误的,因为它正在浪费时间,例如:

Range("A1:C2").Select

并且您正在通过:

Range("A1:32").Select

所以您可以做的是:

Range(cells(1,1),cells(2,lastcolumn)).Select

Cell(1,1)= A1,因为它是行号1列号1

如上所述,如果您愿意的话,更好

Range(cells(1,1),cells(lastcolumn,2)).copy

希望有帮助


3
投票

由于LastColumn是数字,因此出现错误。您需要与之等效的字符串,即列名。 For Further Reading

避免使用.Select并完全限定对象。 INTERESTING READ

这是您要尝试的吗?

Sub Sample()
    Dim ws As Worksheet
    Dim rng As Range
    Dim LastCol As Long
    Dim LastColumn As String

    Set ws = ThisWorkbook.Sheets("Results")

    With ws
        LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column

        '~~> Return column name from number
        LastColumn = Split(.Cells(, LastCol).Address, "$")(1)

        Set rng = .Range("A1:" & LastColumn & "2")

        Debug.Print rng.Address

        rng.Copy
    End With
End Sub

0
投票

enter image description here

我想将数据从第一行复制到最后一行,并且使用lastrow和lastcolumn是未知的。

© www.soinside.com 2019 - 2024. All rights reserved.