在excel宏中选择范围

时间:2019-09-17 15:12:02

标签: excel vba range selection

无法在宏中清楚地选择范围。 我的数据范围是B4:N80(数据始终从B4开始,并且可以上升到任何单元格) 所以我要创建宏以选择此范围

LastRow = DSheet.Cells(Rows.Count, 4).End(xlUp).Row
LastCol = DSheet.Cells(2, Columns.Count).End(xlToLeft).Column
Set PRange = DSheet.Cells(4, 2).Resize(LastRow, LastCol)

使用上述代码无法从B4到“ XX”中选择整个数据

3 个答案:

答案 0 :(得分:3)

声明所有变量,如果您只是想选择范围,请使用.Select

Sub test()

    Dim LastRow As Long
    Dim LastCol As Long
    Dim PRange As Range
    Dim DSheet As Worksheet

    Set DSheet = ActiveSheet
    LastRow = DSheet.Cells(Rows.Count, 4).End(xlUp).Row
    LastCol = DSheet.Cells(4, Columns.Count).End(xlToLeft).Column
    Set PRange = DSheet.Cells(4, 2).Resize(LastRow, LastCol)
    PRange.Select

End Sub

答案 1 :(得分:2)

如果您的目标是选择需要添加的范围

PRange.Select

我还认为您的参数会略有偏离。正确的范围应该是

Set PRange = DSheet.cells(4, 2).Resize(LastRow - 4, LastCol - 2)

编辑:由于您的起始范围是B4,因此您的参数将关闭。因此,例如,如果您的数据下降到B10,则将LastRow设置为具有最后一个数据条目的行号,在本例中为10。现在,如果您想扩展所需范围以包括所有数据条目,则不必调整大小为10(LastRow),但调整为6(LastRow-4),因为4 + 6 =10。在您的示例中,它的大小为4 + 10 = 14,这比您的数据条目实际达到的值要高。

答案 2 :(得分:2)

这对您有用吗?

Sheets("DSheet").Activate
Range("B4").Select
Set PRange = Range(Selection, Selection.End(xlToRight).End(xlDown))