如何获取 ListObject 的 HeaderRowRange 的子集?
How can I obtain a subset of a ListObject's HeaderRowRange?
我正在尝试将 ListObject 的 header 行中的所有单元格设置为特定单元格右侧的格式,同时将左侧的单元格单独放置。当我开始遇到麻烦时,我将代码缩减为:
Set rpt = Me.ListObjects("Report")
With rpt.HeaderRowRange
.Interior.ColorIndex = 3
.Range(.Cells(9), .Cells(12)).Interior.ColorIndex = 7
End With
不幸的是,这样做的结果是整个 header 行都是红色的(正如预期的那样),但是紫色的 sub-range 向下 4 行!
我在短期内成功地解决了这个问题,取了 ListObject 范围的一个子范围。
但是,鉴于我看到有关 HeaderRowRange 未按预期工作的其他问题(尽管以其他方式),谁能解释为什么 HeaderRowRange.Range() 以这种异常方式运行?
编辑:明确地说,我也尝试过使用 fully-qualified 参考,并获得相同的结果。
OK终于重现了。您的 table 不是从第 1 行开始,这就是原因:行偏移与您的 table 的 header 行的行号匹配。
这显然是 Excel object 模型的错误。如果您无法移动 table 以便 header 行位于工作 sheet 的第 1 行(在这种情况下您的代码将完全按预期工作,as-is), 那么你需要解决这个问题。
这似乎有效:
Dim r As Range
Set r = Me.Range(rpt.Range.Address)
Me.Range(r.Cells(9), r.Cells(12)).Interior.ColorIndex = 7
关键是,你得到的范围是 sheet 本身,而不是相对于 rpt.HeaderRowRange
我正在尝试将 ListObject 的 header 行中的所有单元格设置为特定单元格右侧的格式,同时将左侧的单元格单独放置。当我开始遇到麻烦时,我将代码缩减为:
Set rpt = Me.ListObjects("Report")
With rpt.HeaderRowRange
.Interior.ColorIndex = 3
.Range(.Cells(9), .Cells(12)).Interior.ColorIndex = 7
End With
不幸的是,这样做的结果是整个 header 行都是红色的(正如预期的那样),但是紫色的 sub-range 向下 4 行!
我在短期内成功地解决了这个问题,取了 ListObject 范围的一个子范围。
但是,鉴于我看到有关 HeaderRowRange 未按预期工作的其他问题(尽管以其他方式),谁能解释为什么 HeaderRowRange.Range() 以这种异常方式运行?
编辑:明确地说,我也尝试过使用 fully-qualified 参考,并获得相同的结果。
OK终于重现了。您的 table 不是从第 1 行开始,这就是原因:行偏移与您的 table 的 header 行的行号匹配。
这显然是 Excel object 模型的错误。如果您无法移动 table 以便 header 行位于工作 sheet 的第 1 行(在这种情况下您的代码将完全按预期工作,as-is), 那么你需要解决这个问题。
这似乎有效:
Dim r As Range
Set r = Me.Range(rpt.Range.Address)
Me.Range(r.Cells(9), r.Cells(12)).Interior.ColorIndex = 7
关键是,你得到的范围是 sheet 本身,而不是相对于 rpt.HeaderRowRange