剪切 - 在Excel VBA中粘贴自动检测到的范围

时间:2016-07-19 14:21:09

标签: excel vba excel-vba

我正在尝试使用自动检测到的线条范围切割并粘贴大块细胞(在特定位置(特别是在A或B列中最后一次使用的细胞之后)。

Sub Cut_Range_To_Clipboard()

'Detecting number of used lines in the chunck of code I need to cut
Dim LastRow As Long
    With ActiveSheet
        LastRow = .Cells(.Rows.Count, "T").End(xlUp).Row
        MsgBox LastRow
    End With

'Detecting number of used lines in the column I need to paste the code  
Dim LastRow2 As Long
    With ActiveSheet
        LastRow2 = .Cells(.Rows.Count, "B").End(xlUp).Row
        MsgBox LastRow2
    End With

'Cells(20, 3) = T3

Range(Cells(20, 3), Cells(36, LastRow)).Cut
Range(Cells(2, LastRow2 + 1)).Select
ActiveSheet.Paste

Range("T1").Cut
Range(Cells(1, LastRow2 + 1)).Select
ActiveSheet.Paste

Columns("T:AK").EntireColumn.Delete
End Sub

执行代码时,行Range(Cells(2, LastRow2 + 1)).Select输出错误1004,我无法理解原因。

2 个答案:

答案 0 :(得分:1)

更改行:

Range(Cells(2, LastRow2 + 1)).Select

要:

Range("B" & LastRow2 + 1).Select

答案 1 :(得分:1)

您需要添加Address的{​​{1}}属性(每当您调用仅包含一个Cell参数的Range时,必需)。所以:

Cells

虽然这可以解决您的问题,但您应该在代码中进行许多更改,包括避免选择,这将提高性能并避免其他问题