简单的剪切和粘贴excel VBA:不一致和奇怪的结果

时间:2013-12-07 12:43:07

标签: excel vba excel-vba

我需要在活动工作表中剪切和粘贴非空值的行数组。 “E5”是我要剪切的行数组中的第一个非空单元格。这个数组只是1:10的数字序列,没有间隙。期望的行为是切断序列并在“F5”处过去。唯一的复杂因素是我需要复制的范围不固定。

尝试:

Sub Update()             
     ActiveSheet.Range("E5", Range("5:5").End(xlToRight).Address).Copy
     ActiveSheet.Range("F5").Select
     ActiveSheet.Paste     
End Sub

我有一次这个代码,或者至少是“剪切”部分。现在,整个代码块的结果输出是:

  1. 错误1004或438
  2. 代码剪切并将1:2粘贴到“F5”
  3. 以1:1切割并粘贴到“F5”
  4. 请注意,在运行宏之前,我一直确保要剪切的数组完全相同。

    什么是正确的方法?

    真的,我已经找到了解决方案,但我发现的只是复杂或冗长的宏。而且VBA的结构起初有点不透明,至少对我而言。

1 个答案:

答案 0 :(得分:3)

10分钟没有回答?这可能是我的幸运日:P

这是你在尝试什么?我已经对代码进行了评论,因此您不应该对它有任何问题。

Option Explicit

Sub Sample()
    Dim ws As Worksheet
    Dim lCol As Long

    '~~> Set this to the relevant worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")

    With ws
        '~~> Find the last column which has data in Col 5
        lCol = .Cells(5, .Columns.Count).End(xlToLeft).Column

        '~~> Directly cut paste
        .Range(.Cells(5, 5), .Cells(5, lCol)).Cut .Range("F5")
    End With
End Sub