粘贴到下一个空列

时间:2015-08-27 16:11:12

标签: excel vba excel-vba

我已经将此代码粘贴到下一个空行。它工作得很好,但现在我有一个新的VBA项目,我想做同样的事情,但列而不是行

当前代码:

 intLast = shtAlpha.Cells(Rows.Count, "C").End(xlUp)
 intNext = intLast + 5 - (intLast + 1) Mod 5
 Set rngDest = shtAlpha.Cells(intNext, "C").Resize(5, 3)

我尝试了这个但是我得到了编译错误方法或找不到数据成员,它突出显示

.Cells

/

intLast = Omega.Cells(Columns.Count, "1").End(xlRight).Column
intNext = intLast + 5 - (intLast + 5) Mod 5
Set rngDest = Omega.Cells(intNext, "A").Resize(30000, 3)

2 个答案:

答案 0 :(得分:1)

Range()函数仅接受单元格引用作为文本字符串,例如Range("A1")

Cells()函数仅接受数字行/列引用,例如Cells(1, 1)

在这种情况下,您需要更改

 intLast = shtAlpha.Cells(Rows.Count, "C").End(xlUp)

 intLast = shtAlpha.Cells(Rows.Count, 3).End(xlUp)

答案 1 :(得分:1)

要获取第1行中包含任何内容的最后一列,您应该这样做

intLast = Omega.Cells(1,Omega.Columns.Count).End(xlToLeft).Column
intNext = intLast + 5 - (intLast + 5) Mod 5
Set rngDest = Omega.Cells(1,intNext).Resize(30000, 3)

让我们一次完成一项修改:

Cells有两个参数。第一行表示第二行表示列。您想从第一行最后一列开始。所以第一个参数应该是1.第二个参数应该是工作表中的列数。

注意通常最好指定您正在处理的工作表/工作簿。如果打开了多本图书或选择了错误的工作表,这有助于防止出错。

.End会将您带到您所在的 region 的边界。由于您位于第一行的最后一个单元格,因此您位于最右侧< / em>的表格。所以你已经转向来查找包含值的最后一列。因此.End(xlToLeft)

注意 documentation告诉我们参数必须是these值之一。

现在提供错误消息。您可以经常参考this handy VBA error list以获取有关可能导致错误的更多信息。如果在错误警报中给出,我建议搜索错误号。

听起来您的错误是因为Omega不是正确的类型。 VBA告诉您,您正在尝试访问名为Cells的成员,但它无法在对象中找到它。我建议在监视中添加Omega,并在发生错误时查看其成员。通过一些调试,您应该能够找到问题的根源!

希望这有助于:)