2013-07-10 72 views
1

下面的代碼給出了一個錯誤,但當我將範圍更改爲.Range(A2:A9999)時,它可以工作...Excel VBA上的範圍錯誤 - 快速修復?

但它很醜。有沒有辦法從A2向下抓取列(A)中的所有數據?並將其複製到B2?

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

你也在說你想從A複製到B,但是你的代碼試圖從B複製到A. –

回答

0

有它的一條線,你可以如下做到這一點:

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

順便說一句,它複製的一切,不但值,而且格式。要運行它,您的工作表AA應該處於活動狀態。

+0

完美!謝謝 – GimGanDi

1

通過查找列A中最後一個填充的單元格,您可以更精確地查看正在複製的內容。

此副本的SRC片與TGT片的B列列A的內容:

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列。您需要翻轉陳述的左側和右側。

+0

謝謝你的快速回答,但我試圖將它從一張複製到另一張。 (表1至表2)。這隻會在同一張表中複製列。 – GimGanDi

+0

我明白了。我編輯了答案,從一張紙複製到另一張。現在就試試。 (將Sheet5和Sheet6更改爲1和2,或者您的工作簿中的任何內容。) –

1
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 
0

爲什麼不只是複製整列並重新插入無論是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進一步下跌你想保留(你沒有說明)。