选择数据表VBA

时间:2016-03-30 14:48:04

标签: excel vba excel-vba macros

我对VBA /编码非常陌生,所以我需要一些帮助,所以很可能会在接下来的几周内在这里发布。在过去一周左右的时间里,我一直在尽可能多地教自己,我决定开始一个项目。

我需要选择并复制一个数据表,但问题是每天数据变化大小的表格,因此我无法设置特定范围。我使用的代码就是这个,但它并没有选择整个表格。

Workbooks.open "filepath\filename.xls"
Workbooks ("filename.xls").Activate
Range ("b8").Select
Range (Selection, Selection.end(xlDown)).Select
Range (Selection, Selection.end(xlToRight)).Select

附图是表格,第一个包含数据的单元格是b8(目标SLA&类别),我希望它向下复制到图像的右下角。正如我所说,表格每天都会改变大小,因此我无法设定范围。 Table Data

2 个答案:

答案 0 :(得分:0)

您可以选择表格而不是一系列单元格(将“Table1”更改为您的表名称)。

    ActiveSheet.ListObjects("Table1").Range.Select

答案 1 :(得分:0)

鉴于您的表格的总体设计没有变化(即第一次观察总是在单元格B8中),您可以使用

Sub SelectData()

    Dim rngData As Range

    Set rngData = Worksheets("Table1").UsedRange
    rngData.Offset(7, 1).Resize(rngData.Rows.Count - 7, rngData.Columns.Count - 1).Select

End Sub

如果可以进行更改,以下内容应该非常强大:

Sub SelectData()

    Dim rngData As Range
    Dim intRow As Integer
    Dim intColumn As Integer

        intRow = Range("Table1!FirstDataPoint").Row
        intColumn = Range("Table1!FirstDataPoint").Column

        Set rngData = Worksheets("Table1").UsedRange
        rngData.Offset(intRow - 1, intColumn - 1).Resize(rngData.Rows.Count - intRow + 1, rngData.Columns.Count - intColumn + 1).Select

End Sub

要应用此功能,您必须在案例单元格B8(我使用名称“FirstDataPoint”)中命名左上角的数据点。当您在此单元格的左侧或上方插入行或列时,代码仍然有效。