如何 select 范围 Excel ListColumn 的 DataBodyRange 从倒数第二个单元格到倒数第二个单元格 VBA
How to select range in Excel ListColumn's DataBodyRange from second to second last cell with VBA
我将数据格式化为 table。我试图在某一列中选择一系列单元格,而不管这些单元格是否有数据。 table 中的行数会发生变化,这就是我需要使用动态范围的原因。
除了从第二个单元格到最后一个单元格的范围之外,我设法 select body 列的整个数据 body 范围。
如果我可以设置范围,我打算将条件格式设置宏应用于该范围。
我很难将范围缩小到 table 列中的倒数第二个单元格。
Sub SelectRange()
Dim LC As ListColumn
Dim SecondCell As Long
Dim LastCell As Long
Dim SecondtoLastCell As Long
Set LC = Worksheets("On-going").ListObjects("Table4").ListColumns("Redos (no.)")
'Choosing the table column with the header "Redos (no.)", works like a charm
With LC
SecondCell = .DataBodyRange(2)
'Choosing the second cell of the column, no problem
SecondtoLastCell = .Range(.DataBodyRange.Rows.Count)
'Choosing the second to last cell of the column. Came by this accidentally while trying everything, I have no idea why it works.
'~~~Insert Range.Here
'THE PROBLEM IS CREATING A RANGE FROM SecondCell TO SecondtoLastCell
End With
End Sub
我觉得我已经尝试了所有的可能性,包括Range(SecondCell & SecondtoLastCell).Select
和Range(SecondCell, Range(SecondtoLastCell)).Select
。通常发生的是 上面 列 header 行的一个单元格(“Redos (no.)” 是 selected.
一种选择是在此处使用 Range.Resize
:
Set LC = Worksheets("On-going").ListObjects("Table4").ListColumns("Redos (no.)")
With LC.DataBodyRange
Dim myRange As Range
Set myRange = .Cells(2).Resize(.Rows.Count - 2)
End With
谢谢@BigBen!如此优雅的解决方案。
我用 Set myRange = .Cells(2).Resize(.Rows.Count - 2)
找到了射程点。
我将数据格式化为 table。我试图在某一列中选择一系列单元格,而不管这些单元格是否有数据。 table 中的行数会发生变化,这就是我需要使用动态范围的原因。
除了从第二个单元格到最后一个单元格的范围之外,我设法 select body 列的整个数据 body 范围。
如果我可以设置范围,我打算将条件格式设置宏应用于该范围。
我很难将范围缩小到 table 列中的倒数第二个单元格。
Sub SelectRange()
Dim LC As ListColumn
Dim SecondCell As Long
Dim LastCell As Long
Dim SecondtoLastCell As Long
Set LC = Worksheets("On-going").ListObjects("Table4").ListColumns("Redos (no.)")
'Choosing the table column with the header "Redos (no.)", works like a charm
With LC
SecondCell = .DataBodyRange(2)
'Choosing the second cell of the column, no problem
SecondtoLastCell = .Range(.DataBodyRange.Rows.Count)
'Choosing the second to last cell of the column. Came by this accidentally while trying everything, I have no idea why it works.
'~~~Insert Range.Here
'THE PROBLEM IS CREATING A RANGE FROM SecondCell TO SecondtoLastCell
End With
End Sub
我觉得我已经尝试了所有的可能性,包括Range(SecondCell & SecondtoLastCell).Select
和Range(SecondCell, Range(SecondtoLastCell)).Select
。通常发生的是 上面 列 header 行的一个单元格(“Redos (no.)” 是 selected.
一种选择是在此处使用 Range.Resize
:
Set LC = Worksheets("On-going").ListObjects("Table4").ListColumns("Redos (no.)")
With LC.DataBodyRange
Dim myRange As Range
Set myRange = .Cells(2).Resize(.Rows.Count - 2)
End With
谢谢@BigBen!如此优雅的解决方案。
我用 Set myRange = .Cells(2).Resize(.Rows.Count - 2)
找到了射程点。