微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用VBA在Excel ListColumn的DataBodyRange中选择从倒数第二个单元格到倒数第二个单元格的范围

如何解决如何使用VBA在Excel ListColumn的DataBodyRange中选择从倒数第二个单元格到倒数第二个单元格的范围

我将数据格式化为表格,而我想做的是在特定列中选择一个单元格范围,无论这些单元格是否有数据。表中的行数将改变,这就是为什么我需要使用动态范围的原因。

除了从第二个单元格到最后一个单元格的范围之外,我还设法选择了表列的整个数据主体范围。我一直在使用臭名昭著的.Select来突出显示单元格/范围以确认代码有效,但是随后我将其删除了。如果可以,我计划将条件格式宏应用于范围(我已经准备好代码,只需要用这段代码设置范围)即可。

我一直努力将范围缩小到表格列的倒数第二个单元格。

到目前为止我所拥有的:

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).SelectRange(SecondCell,Range(SecondtoLastCell)).Select。通常发生的是,仅在列标题行的上方上选择了一个单元格(“重做(no。)”。无法确定。

我觉得这是一个简单的问题,但是我再也看不到森林换树木了-尽管我知道Excel表格在后面很痛苦。

任何指向正确方向的指针都将受到赞赏!

干杯, 艾玛

解决方法

一种选择是在此处使用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)上找到了射程点。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。