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