我有一个根据切片器选择改变大小的动态表,所以有时表可能由4行组成,有时是7行,有时是15行,等等。
不管表的大小如何,列A中的最后一行将始终等于"Retail Total“。
我的表基本上看起来像这样:
+--------------+------+------+------+------+------+------+
| ColA | ColB | ColC | ColD | ColE | ColF | ColG |
+--------------+------+------+------+------+------+------+
| Row1 | B2 | C2 | D2 | E2 | F2 | G2 |
| Row2 | B3 | C3 | D3 | E3 | F3 | G3 |
| Row3 | B4 | C4 | D4 | E4 | F4 | G4 |
| Retail Total | B5 | C5 | D5 | E5 | F5 | G5 |
+--------------+------+------+------+------+------+------+我想做的是有一些VBA代码,将调整表的大小取决于“零售总额”发生的地方。
到目前为止,我的代码如下:
Private Sub Worksheet_Calculate()
Dim ws As Worksheet
Dim ob As ListObject
Dim Lrow1 As Long
Set ws = ActiveWorkbook.Worksheets("Sheet1")
Set ob = ws.ListObjects("Table6")
With Sheets("Sheet1")
Lrow1 = .Cells(.Rows.Count, "G").End(xlUp).Row
Do While .Cells(Lrow1, "A").Value = "Retail Total"
Lrow1 = Lrow1 - 1
Loop
End With
ob.Resize ob.Range.Resize(Lrow1)
End Sub这段代码似乎不起作用。这个表一直在增长,不会止步于"Retail Total",所以我希望能得到一些帮助。
发布于 2018-01-18 03:41:52
我运行了这段代码,它正常工作,除了一个off-by-one错误。我用以下命令修复了它:
ob.Resize ob.Range.Resize(Lrow1 + 1)您应该验证包含"Retail Total“的单元格是否确实包含该逐字短语,而不是任何前导或尾随空格。您可以通过将此代码放入您的即时窗口进行测试,并查看它是否为真:
? range("A5").Value = "Retail Total"用当前恰好包含"Retail Total“的单元格替换A5。
https://stackoverflow.com/questions/48307256
复制相似问题