如何格式化表格中的行而不是工作表上的整行?

  • 本文关键字:工作 格式化 表格 excel vba
  • 更新时间 :
  • 英文 :


我想根据范围第一列中的值为命名范围(而不是命名范围之外(中的整行着色。

我在一张不同尺寸的工作表上有多个表格。我想遍历"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

最新更新