试图突出显示列的使用范围

时间:2017-04-13 13:41:18

标签: excel vba excel-vba

我遇到了突出显示列使用范围的问题。以下代码创建两个工作表的副本,删除一些值,然后突出显示某些列。

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.RangeSheets("RM Analysis").Range)尚未发挥作用。

任何人都可以看到我在哪里出错?

2 个答案:

答案 0 :(得分:2)

xlR1C1语法会破坏您对最后一个非空单元格的请求。

lastRow = Cells(Rows.Count, cell.Column).End(xlUp).Row

我强烈建议您避免依赖ActiveSheet并使用显式父工作表引用。使用With ... End With并在所有RangeCells之前加. .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

将列数更改为您想要高亮的列