动态调整表格到最后一行?

时间:2017-05-16 21:20:28

标签: excel vba excel-vba excel-2010

我有一个表,我想在VBA中动态调整大小。 我目前的代码是:

Sub resizedata()
Dim ws As Worksheet
Dim ob As ListObject
Dim Lrow1 As Long

Lrow1 = Sheets("Sheet4").Cells(Rows.Count, "J").End(xlUp).Row
Set ws = ActiveWorkbook.Worksheets("Sheet4")
Set ob = ws.ListObjects("Table28")

ob.Resize ob.Range.Resize(Lrow1)

End Sub

我想在此添加一个条件......

  1. 该表应调整到J列中的第一个0之前。
  2. 例如:

    +-------+--------+-------+
    |Date(I)|Hours(J)| Sal(K)|
    +-------+--------+-------+
    | Aug   | 150000 | 12356 |
    | Sep   |  82547 |  8755 |
    | Oct   |  92857 | 98765 |
    | Nov   |  10057 | 45321 |
    | Dec   |      0 |     0 |
    | Jan   |      0 |     0 |
    +-------+--------+-------+
    

    上表的最后一行应该是11月的行,因为12月是第J列的第0个值。

    任何人都可以协助修改我现有的代码吗?

3 个答案:

答案 0 :(得分:3)

类似的东西:

val

答案 1 :(得分:1)

您是否有特殊原因希望在VBA中执行此操作?您只需创建一个已定义的名称并使用以下内容创建一个自我调整范围:

OFFSET(Sheet!$A$1,0,0,COUNTA(Sheet!$A:$A),COUNTA(Sheet!$1:$1))
OFFSET(reference, rows, cols, [height], [width])

顶行显示典型用法,第二行是官方语法。

在“公式”选项卡上进入“名称管理器”,单击“新建”,为其命名并将代码粘贴到“引用:”。

有一点需要注意,您的数据看起来好像没有值。如果情况确实如此,那么您必须进行不同的测试以确定身高。

此方法的一个好处是始终计算它。如果数据发生变化,则指定范围的大小定义会根据需要进行调整。

我希望这很有用,我经常使用它......

答案 2 :(得分:1)

这应该可以帮助您自动调整表格的大小。

   With Worksheets("sheet-name").ListObjects("table-name")
        .Resize .Range(1, 1).CurrentRegion
    End With