我尝试找到列的最后一个彩色单元格
我有此代码可在工作表代码中使用:
Dim n As Integer: n = 0
While (Range("A" & n).Interior.Color <> RGB(255, 255, 255))
n = n + 1
Wend
但是在我的模块中,我将第二行替换为:
While (Worksheets("MyWs").Range("A" & n).Interior.Color <> RGB(255, 255, 255))
此行抛出错误1004对象定义错误
我也尝试过
While (Worksheets("MyWs").Range(Worksheets("MyWs").Cell(1,n)).Interior.Color <> RGB(255, 255, 255))
没有成功
答案 0 :(得分:2)
凤凰城,您说您正在尝试找到最后一个彩色单元格。但是在您的情况下,您要针对颜色为{strong>白色的RGB (255, 255, 255)
测试单元格。您需要使用索引或代码来表示无填充颜色,该颜色可能类似于.Interior.ColorIndex = xlNone
。因此,即使您没有遇到这些错误,您的代码也可能无法按预期的方式工作。我也许可以为您的问题提供解决方案。
在共享代码之前,请先注意几件事。由于我不知道您的数据的样子,因此无法根据您的确切需求定制代码。这是使用我最喜欢的For Each
循环的基本代码,但是当然,您可以使用任何喜欢的循环。
循环应在有色单元格中开始,并将继续直到遇到第一个非有色单元格为止。因此,如果您在该列的“中间”有一些非彩色单元格,它将停止循环。
请参见下面的代码:
Sub find_last_colored()
Dim cel As Range
Dim lastRow As Long
'define the number of last row in which the cell is not empty
lastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
'loop through every cell in column A to the last non-empty cell
For Each cel In ActiveSheet.Range("A:A" & lastRow)
If cel.Interior.ColorIndex = xlNone Then
'activates the last colored cell and gives its address
cel.Offset(-1, 0).Activate
MsgBox cel.Offset(-1, 0).Address
Exit For
Else
End If
Next cel
End Sub
您会注意到我没有定义范围的确切范围,我只将其保留为ActiveSheet.
,所以请不要忘记在需要时进行更改。
我希望这可以解决您当前的问题,或者至少可以为您指明正确的方向。