对象范围全局失败

时间:2016-08-21 20:37:45

标签: excel-vba vba excel

我试图在我的程序中引用一行来改变它的内部颜色,我可以做整行,但是当只有一列数据时它看起来很邋(整个行突出显示为灰色即使有一列数据,页面的末尾)。所以我试图只使用一行结束行,但是我得到了对象失败的范围错误。

ws1.Rows(i).Copy
ws4.Cells(z, 1).PasteSpecial
'ws4.Rows(z).Interior.Color = rgbLightGrey -----Comment-----
ws4.Range(z, Range(z).End(xlToRight)).Interior.Color = rgbLightGrey

注释行是我现在使用的,但我想实现行结束方法。

1 个答案:

答案 0 :(得分:0)

在您的代码中,z似乎是整数(或长整数),而不是范围引用。

使用:

ws4.Range(ws4.Cells(z, 1), ws4.Cells(z, 1).End(xlToRight)).Interior.Color = rgbLightGrey

编辑:我刚注意到你说你只有一列数据。如果是这样,上面的代码就不会起作用,因为.End(xlToRight)会在单元格ws4.Cells(z, 1)右侧找到第一个非空单元格,在行尾停止。

如果您只是尝试为单个单元格着色,请使用:

ws4.Cells(z, 1).Interior.Color = rgbLightGrey

根据评论进行下一次编辑:

要选择列A与行中最后一个非空单元格之间的范围,请使用:

ws4.Range(ws4.Cells(z, 1), ws4.Cells(z, ws4.Columns.Count).End(xlToLeft)).Interior.Color = rgbLightGrey