我已经将此代码粘贴到下一个空行。它工作得很好,但现在我有一个新的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)
答案 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
,并在发生错误时查看其成员。通过一些调试,您应该能够找到问题的根源!
希望这有助于:)