我遇到了突出显示列使用范围的问题。以下代码创建两个工作表的副本,删除一些值,然后突出显示某些列。
Sub CreateAnalysisSheets()
Dim cell, HlghtRng As Range
Dim i As Integer
Dim ref, findLast, findThis As String
Dim lastRow As Long
findLast = "2016"
findThis = "2017"
Application.ScreenUpdating = False
Sheets(1).Copy After:=Sheets(2)
ActiveSheet.Name = Left(Sheets(1).Name, InStr(1, Sheets(1).Name, " ")) & "Analysis"
Sheets(2).Copy After:=Sheets(3)
ActiveSheet.Name = Left(Sheets(2).Name, InStr(1, Sheets(2).Name, " ")) & "Analysis"
Sheets("RM Analysis").Select
For Each cell In ActiveSheet.UsedRange
If cell.Value = "NULL" Then
cell.ClearContents
End If
Next cell
For Each cell In Range("1:1")
ref = cell.Value
lastRow = Range("R" & Rows.Count & "C" & cell.Column).End(xlUp).Row
Set HlghtRng = Range(Cells(1, cell.Column) & Cells(lastRow, cell.Column))
If InStr(1, ref, findLast) > 0 And InStr(1, ref, "YTD") = 0 Then
HlghtRng.Interior.ColorIndex = 8
End If
Next cell
For Each cell In Sheets(4).UsedRange
If cell.Value = "NULL" Then
cell.ClearContents
End If
Next cell
Sheets("RM Analysis").Select
Application.ScreenUpdating = True
End Sub
问题出现在lastRow = Range("R" & Rows.Count & "C" & cell.Column).End(xlUp).Row
,我得到Method 'Range' of Object '_Global' Failed
。我已尝试寻找解决此问题的方法,但我尝试过的所有内容(ActiveSheet.Range
和Sheets("RM Analysis").Range
)尚未发挥作用。
任何人都可以看到我在哪里出错?
答案 0 :(得分:2)
xlR1C1语法会破坏您对最后一个非空单元格的请求。
lastRow = Cells(Rows.Count, cell.Column).End(xlUp).Row
我强烈建议您避免依赖ActiveSheet并使用显式父工作表引用。使用With ... End With
并在所有Range
和Cells
之前加.
.Range(...)
或.Cells(...)
,可以非常简单。
在With ... End With
语句中,所有引用都需要以.
开头。此外,以下不是字符串连接(例如&
),而是.Range(起始单元格逗号结束单元格)操作。
with worksheets("RM Analysis")
...
Set HlghtRng = .Range(.Cells(1, cell.Column), .Cells(lastRow, cell.Column))
...
end with
答案 1 :(得分:0)
这应该做
Map
将列数更改为您想要高亮的列