简单的剪切和粘贴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 

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

  1. 错误1004或438
  2. 代码剪切和粘贴1:2到“F5”
  3. 剪切和粘贴1:1到“F5”

请注意,在运行macros之前,我一直确保要切割的数组完全相同。

什么是正确的方法?

真的,我find了一个解决scheme,但我发现所有的是复杂或冗长的macros。 VBA的结构起初是不透明的,至less对我来说是这样。

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