按 Header VBA 定义范围
Define Range by Header VBA
我在 VBA 中有一个范围定义,如下所示:
Sheet5.Range(Range("K2"), Sheet5.Range("K2").End(xlDown))
这行得通,但如果我的报告布局发生变化,它将行不通。我想知道是否可以根据列第一行的 header 定义范围?非常感谢对此问题的任何帮助!
您可以使用任何您喜欢的名称来命名范围。在左上角,您可以看到所选范围的 ID。如果您在其中输入名称,例如 "Header_Cell",您可以将代码更改为:
Sheet5.Range(Range("Header_Cell"), Sheet5.Range("Header_Cell").End(xlDown))
下面的示例根据名称搜索 header。在示例中,它根据匹配为整个列 Red
着色,但您可以更改它。变量应该很容易理解,但请让我知道问题。
Sub Color_Range_Based_On_Header()
Dim rngHeaders As Range
Dim rngHdrFound As Range
Const ROW_HEADERS As Integer = 1
Const HEADER_NAME As String = "Location"
Set rngHeaders = Intersect(Worksheets("Sheet1").UsedRange, Worksheets("Sheet1").Rows(ROW_HEADERS))
Set rngHdrFound = rngHeaders.Find(HEADER_NAME)
If rngHdrFound Is Nothing Then
'Do whatever you want if the header is missing
Exit Sub
End If
Range(rngHdrFound, rngHdrFound.End(xlDown)).Interior.Color = vbRed
End Sub
我在 VBA 中有一个范围定义,如下所示:
Sheet5.Range(Range("K2"), Sheet5.Range("K2").End(xlDown))
这行得通,但如果我的报告布局发生变化,它将行不通。我想知道是否可以根据列第一行的 header 定义范围?非常感谢对此问题的任何帮助!
您可以使用任何您喜欢的名称来命名范围。在左上角,您可以看到所选范围的 ID。如果您在其中输入名称,例如 "Header_Cell",您可以将代码更改为:
Sheet5.Range(Range("Header_Cell"), Sheet5.Range("Header_Cell").End(xlDown))
下面的示例根据名称搜索 header。在示例中,它根据匹配为整个列 Red
着色,但您可以更改它。变量应该很容易理解,但请让我知道问题。
Sub Color_Range_Based_On_Header()
Dim rngHeaders As Range
Dim rngHdrFound As Range
Const ROW_HEADERS As Integer = 1
Const HEADER_NAME As String = "Location"
Set rngHeaders = Intersect(Worksheets("Sheet1").UsedRange, Worksheets("Sheet1").Rows(ROW_HEADERS))
Set rngHdrFound = rngHeaders.Find(HEADER_NAME)
If rngHdrFound Is Nothing Then
'Do whatever you want if the header is missing
Exit Sub
End If
Range(rngHdrFound, rngHdrFound.End(xlDown)).Interior.Color = vbRed
End Sub