如何从表头中遍历列vba

我是VBA的新手,我写了一段代码来突出显示我excel文件中的一些内容。但我有一个问题,我想从vba中的表标题遍历列,而我无法做到这一点,因为我的列号未来可能会更改。请帮忙。如何从表头中遍历列vba

以下是我的代码 -

谢谢!

Sub LoopThroughRows() 

Application.EnableCancelKey = xlDisabled

Dim k As Long, lastrow As Long, lastCol As Long, i As Integer, j As Integer, CurrentYear As String, TableHeader As String, CurrentQuarter As String, TargetYear As String, TargetQuarter As String

lastCol = Range("AA1").End(xlToRight).Column

With Worksheets("Sheet1")

lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row

End With

Application.ScreenUpdating = False

For j = 2 To lastrow 'Starting the loop from the 2nd row

For i = 27 To lastCol ' Starting the loop from the 27th column AA1

With Worksheets("Sheet1")

If .Cells(j, i).Value > 0 Then

TableHeader = Cells(1, i).Text

Exit For

End If

End With

Next 'Loop to traverse columns ends if the condition is met

CurrentYear = Right(Cells(1, i), 2) ' Extracting the last 2 characters

CurrentQuarter = Mid(Cells(1, i), 2, 1) 'Extracting the Quarter number 2nd character

TargetYear = Right(Range("R" & j), 2) 'Extracting the last 2 characters

TargetQuarter = Right(Range("Q" & j), 1) 'Extracting the quarter number

Range("BX1" & j) = "Status"

If Not IsNull(CurrentYear & TargetYear) Then

If CurrentYear < TargetYear Then

Range("A" & j).EntireRow.Interior.ColorIndex = 3

Range("BX" & j) = "Early Start"

ElseIf TargetYear = CurrentYear Then

If CurrentQuarter < TargetQuarter Then

Range("A" & j).EntireRow.Interior.ColorIndex = 3

Range("BX" & j) = "Early Start"

End If

End If

End If

If Not IsNull(CurrentYear & TargetYear) Then

If CurrentYear > TargetYear Then

Range("A" & j).EntireRow.Interior.ColorIndex = 6

Range("BX" & j) = "Late Start"

ElseIf TargetYear = CurrentYear Then

If CurrentQuarter > TargetQuarter Then

Range("A" & j).EntireRow.Interior.ColorIndex = 6

Range("BX" & j) = "Late Start"

End If

End If

End If

If WorksheetFunction.Sum(Range("AA" & j & ":BW" & lastCol)) = 0 Then

Range("A" & j).EntireRow.Interior.ColorIndex = 5

Range("BX" & j) = "Not Started"

End If

Next ' Moving on to next row

Application.ScreenUpdating = True

End Sub

回答:

还没有通过你的代码,但你可以从WorksheetObject.Range("TableName[HeaderCaption]").Column访问实际的列。

说我有一个表 “表1”(的ListObject)在Sheet与Dim oWS as Worksheet; Set oWS = Thisworkbook.Worksheets("Sheet1"),则:a特定部首的oWS.Range("Table1[#Headers]").Address

  • 柱:oWS.Range("Table1[MyHeader]").Column
    • 头地址可接

    Ref:ListObject Object (Excel)

    以上是 如何从表头中遍历列vba 的全部内容, 来源链接: utcz.com/qa/260250.html

    回到顶部