Excel VBA关于范围错误-快速修复?

Excel VBA关于范围错误-快速修复?,vba,excel,Vba,Excel,下面的代码给出了一个错误,但当我将范围更改为.range(A2:A9999)时,它会工作 但是很难看。有没有办法从A2和A2下面获取(A)列中的所有数据?然后把它复制到B2 Sheets("AA").Range("A2:A").Value = Sheets("BB").Range("B2:B").Value 通过在列A中查找最后填充的单元格,可以更精确地了解要复制的内容 这将src表上A列的内容复制到tgt表的B列: Sub CopyOneColumnToAnother() Dim w

下面的代码给出了一个错误,但当我将范围更改为
.range(A2:A9999)
时,它会工作

但是很难看。有没有办法从A2和A2下面获取(A)列中的所有数据?然后把它复制到B2

Sheets("AA").Range("A2:A").Value = Sheets("BB").Range("B2:B").Value

通过在列A中查找最后填充的单元格,可以更精确地了解要复制的内容

这将src表上A列的内容复制到tgt表的B列:

Sub CopyOneColumnToAnother()
    Dim wb As Workbook
    Dim src As Worksheet
    Dim tgt As Worksheet
    Dim lastRow As Long

    Set wb = ThisWorkbook
    Set src = wb.Sheets("Sheet5")
    Set tgt = wb.Sheets("Sheet6")
    lastRow = src.Range("A" & src.Rows.Count).End(xlUp).Row

    tgt.Range("B2:B" & lastRow).Value = src.Range("A2:A" & lastRow).Value
End Sub
出现错误的原因是您的范围没有有效的端点<代码>范围([firstcell]:[lastcell])是正确的语法,因此您需要在源和目标范围中为lastcell添加一行


请注意,即使您的代码运行,它也不会满足您的需要。您正在将A列设置为与B列相等。您需要翻转语句的左侧和右侧。

要将其放在一行中,您可以按如下操作:

Sheets("AA").Range("A2", Cells(Rows.Count, "A")).Copy Sheets("BB").Range("B2")

顺便说一句,它复制了所有内容,不仅是值,还有格式。要运行它,您的工作表AA应该是活动的。

为什么不复制整个列并重新插入B1中的内容:

Sub CopyValues()

    Dim rValues As Range

    With Sheet1
        Set rValues = .Range("A2", .Cells(.Rows.Count, 1).End(xlUp))
    End With

    rValues.Offset(, 1).Value = rValues.Value

End Sub
Range("A:A").Copy Columns("B:B")
Range("B1").Value = "Whatever"
更详细地说:

Dim previous 'As Variant (or whatever it is)

previous = Worksheets("BB").Range("B1").Value
Worksheets("AA").Range("A:A").Copy Worksheets("BB").Columns("B:B")
Worksheets("BB").Range("B1").Value = previous

除非您希望保留(您没有说明)列B中的数据。

您还说您想从A复制到B,但您的代码试图从B复制到A。感谢您的快速回答,但我正在尝试将其从一张纸复制到另一张纸。(第1页至第2页)。这只复制同一张表中的列。我明白了。我编辑了答案,以便从一张纸复制到另一张纸。现在试试看。(将表5和表6更改为1和2或工作簿中的任何内容。)