Excel VBA的范围错误 – 快速修复?

下面的代码给出了一个错误,但是当我将范围更改为.Range(A2:A9999)它的工作原理…

但这很丑。 有没有办法从A2和列中抓取列(A)中的所有数据? 并将其复制到B2?

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

要在一行中,你可以做到这一点,如下所示:

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

顺便说一句,它复制一切,不仅值,而且格式。 要运行它,你的表AA应该是活动的。

 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 

通过查找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 

你得到错误的原因是因为你的范围没有有效的终点。 Range ([firstcell]:[lastcell])是正确的语法,因此您需要在源范围和目标范围中为最后一个单元格添加一行。

请注意,即使您的代码运行,它也不会做你想要的。 您将A列设置为等于B列。您需要翻转语句的左侧和右侧。

为什么不复制整个列并重新插入任何在B1:

 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栏有更多的数据(你没有说明)。