如果您添加此代码
Sub ApplyFormatting()
CopyFormat Range("A3:A10"), Range("A1")
CopyFormat Range("B3:B10"), Range("B1")
CopyFormat Range("C3:C10"), Range("C1")
CopyFormat Range("D3:D10"), Range("D1")
End Sub
Sub CopyFormat(dest As Range, copyfrom As Range)
dest.Interior.Color = copyfrom.Interior.Color
End Sub
在工作表的代码区域,您有一个简单的工具,几乎可以满足您的需求。唯一的事情是你必须在ApplyFormatting
某处调用子程序。例如,如果第一行的颜色取决于同一工作表某处某些单元格的值,则可以使用该工作表的 Worksheet_Change 事件:
Private Sub Worksheet_Change(ByVal Target As Range)
ApplyFormatting
End Sub
请注意,此事件不会直接由某些单元格的背景颜色更改触发,仅当单元格值更改时才会触发。在您的情况下,这可能就足够了,但是由于您忘记告诉我们您的第一行是如何精确格式化的,我只能猜测。
编辑:对您的评论:无需对范围规范进行硬编码,以上只是演示如何复制格式的示例。
将其应用于整个工作表的解决方案将如下所示:
Sub ApplyFormatting()
Dim maxRow As Long, maxCol As Long, col As Long
maxRow = Cells.SpecialCells(xlCellTypeLastCell).Row
maxCol = Cells.SpecialCells(xlCellTypeLastCell).Column
For col = 1 To maxCol
CopyFormat Range(Cells(3, col), Cells(maxRow, col)), Cells(1, col)
Next
End Sub
您可能必须将其限制/调整到实际工作表中的行/列,但我希望您能大致了解。