我想根据范围第一列中的值为命名范围(而不是命名范围之外(中的整行着色。
我在一张不同尺寸的工作表上有多个表格。我想遍历"A"列,并为表格的整行(而不是表格外(着色。
范围是动态的,即列可能会有所不同。
(https://www.dropbox.com/s/y9is3xerqps0q7e/example.JPG?dl=0( - 图像链接
如何使范围动态化?
我在网上得到的答案令人困惑。条件格式不是一种选择,因为我在应用它时会丢失其他格式,即表格周围的边框等(未显示在图像中(。
Sub highlight()
Dim LastRow as Long
Sheets("Sheet2").Activate
Set sht = ActiveWorkbook.Sheets("Sheet2")
LastRow = Cells(Rows.Count. "A'").End(xlUp).Row
For n= LastRow to1 Step -1
If sht.Cells(n, "A").Value = "series3" Then sht.Range(?????).Interior.ColorIndex = 29
'Continues like this for series4, series5 and so on
Next n
End Sub
当谈到 Range(( 内部的内容时,我感到困惑。
创建最后一列变量。目前,这会在突出显示之前计算行级别的最后一列 (LC
(。如果你有一个表(或命名范围(的列表,你可以只遍历表对象(或命名范围的数组(,并在每个表的标题级别计算最后一列。
我不确定您是否有向后循环的原因,但这里只是为了示例而撤消。如果您唯一的操作是突出显示,那么这里没有区别。
Sub Dynamic_HL()
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet2")
Dim LR As Long, LC As Long, i As Long
LR = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
For i = 1 to LR
If ws.Range("A" & i) = "series3" Then
LC = ws.Cells(i, ws.Columns.Count).End(xlToLeft).Column
ws.Range(ws.Cells(i, 1), ws.Cells(i, LC)).Interior.ColorIndex = 29
End If
Next i
End Sub