dynamic调整表格的最后一行?

我有一个表,我想在VBAdynamicresize。 我目前的代码是这样的:

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

例如:

 +-------+--------+-------+ |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个值。

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

就像是:

 With Sheets("Sheet4") Lrow1 = .Cells(.Rows.Count, "J").End(xlUp).Row Do While .Cells(Lrow1, "J").Value=0 Lrow1 = Lrow1 - 1 Loop End With 

你想在VBA中做这个特殊的原因吗? 您可以简单地创build一个定义的名称,并使用以下来创build一个自我调整范围:

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

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

进入“公式”选项卡上的“名称pipe理器”,单击“新build”,为其指定名称并将代码粘贴到“引用:”中。

一个警告,它看起来好像你的数据有没有价值0。 如果确实如此,你将不得不做一个不同的testing来确定身高。

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

我希望这是有帮助的,我用了很多…