2014-06-24 73 views
0

我想複製列中的所有非空白記錄並將它們粘貼到某處。選擇並複製一系列單元格

下面的代碼工作正常,直到我有一個情況,我只有一個記錄,它會複製整個列(A2A1048576)。所以,當它試圖將值粘貼到新區域時,我有一個錯誤,因爲沒有足夠的行。

有人可以幫忙嗎?我不希望看到超過2000條記錄,我認爲這裏真正的問題只是當我只有一條記錄時,我想複製該記錄而不是整列。

Sheets("FinalListofContracts").Select 
Range("A2").Select 
Range(Selection, Selection.End(xlDown)).Select 
Selection.Copy 

回答

0

我認爲最好是對最後一行進行計數並給出複製表單的範圍。 這是一個返回行數並根據返回的行數簡單複製的函數。

Function RowCounter(sSheetName As String, sRangeCol As String) As Long 
    Dim rowCnt As Long 
    rowCnt = 0 
    Sheets(sSheetName).Select 
    rowCnt = ActiveSheet.Cells(Rows.Count, Range(sRangeCol).Column).End(xlUp).Row 
    RowCounter = rowCnt 
End Function 

Sub copyRow() 
    Dim aRange As String 
    rowCnt = RowCounter("FinalListofContracts", "A1") 
    aRange = "A1:A" & rowCnt  
    ActiveWorkbook.Sheets("FinalListofContracts").Range(aRange).copy 

End Sub 
0

在將選擇範圍擴展到全範圍之前,我們可以測試該全範圍的計數是否超過2000行。或者說,我們可以只在數量少於2000行的情況下選擇範圍。全碼:

Sheets("FinalListofContracts").Select 
Range("A2").Select 
If Range(Selection, Selection.End(xlDown)).Rows.Count < 2000 Then 
    Range(Selection, Selection.End(xlDown)).Select 
End If 
Selection.Copy 

顯然,可以做出更大的2000 ....任何地方至2000年間(如果那是你的總是最大值)和65000(如果使用舊文件格式)應該得到期望的結果。

相關問題