Vba 粘贴到下一个空列
我已经有了粘贴到下一个空行的代码。它工作得很好,但现在我有一个新的VBA项目,我想做同样的事情,但列而不是行 当前代码:Vba 粘贴到下一个空列,vba,excel,Vba,Excel,我已经有了粘贴到下一个空行的代码。它工作得很好,但现在我有一个新的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) 我尝试了这个方法,但我得到了编译错误方法或找不到数据成员,它突出显
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
/
Range()
函数只接受单元格引用作为文本字符串,例如Range(“A1”)
Cells()
函数只接受数字行/列引用,例如单元格(1,1)
在这种情况下,您需要进行更改
intLast = shtAlpha.Cells(Rows.Count, "C").End(xlUp)
到
要获得第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)
让我们一次一个地完成更改:
单元格
采用两个参数。第一个表示行,第二个表示列。您希望从第一行的最后一列开始。所以第一个参数应该是1。第二个应该是工作表中的列数
注意通常最好指定您正在使用的工作表/工作簿。如果打开了多本书或选择了错误的工作表,这有助于防止出现错误
.End
将带您到达所在区域的边界。由于您位于第一行的最后一个单元格,因此您位于工作表的最右侧。因此,您必须移动到左侧,以查找其中包含值的最后一列。因此.End(xlToLeft)
注意告诉我们参数必须是其中一个值
现在查看您的错误消息。有关导致错误的原因的更多信息,您可以经常参考。如果错误警报中给出了错误号,我建议搜索错误号
听起来您的错误是因为Omega
不是正确的类型。VBA告诉您正在尝试访问名为Cells
的成员,但它在对象中找不到该成员。我建议将Omega
添加到手表中,并在出现错误时查看其成员。通过一点调试,您应该能够找到问题的根源
希望这能有所帮助:)
ω.单元格(1,Columns.Count).End(xltoLeft).列将是第1AFAIK行单元格()中最后占用的列。
需要两个整数,不能使用字母字符。所以,您需要shtAlpha.Cells(Rows.Count,3).End(xlUp)
。或者,如果确实要使用字母,请将其更改为shtAlpha.Cells(Rows.Count,columns(“C”).Column)
“1”不是数字。它是一个文本字符串,包含与数字1的可视图像相对应的ASCII字符。1是一个数字。“1”是一个文本字符串。@BruceWayne-第二个参数可以是数字,也可以是列字母。@TimWilliams-啊,我没有意识到这一点。谢谢实际上,我相信可以使用字符串作为列的索引。
intLast = shtAlpha.Cells(Rows.Count, 3).End(xlUp)
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)