我有一个基于切片器选择更改大小的动态表,因此有时表可能包含4行,有时是7行,有时是15行等。
无论表格大小如何,A栏的最后一行总是等于“零售总额”。
我的表看起来基本上是这样的:
+--------------+------+------+------+------+------+------+
| 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
此代码似乎不起作用。该表不断增长,并没有停留在“零售总额”,所以我希望得到一些帮助。
答案 0 :(得分:1)
我运行此代码并且它有效,除了一个错误的错误。我修好了:
ob.Resize ob.Range.Resize(Lrow1 + 1)
您应该验证包含“零售总计”的单元格实际上是否包含该逐字短语,而不是任何前导或尾随空格。您可以通过将此代码放在您的即时窗口中进行测试,看看它是否真实:
? range("A5").Value = "Retail Total"
将A5替换为恰好包含“Retail Total”的任何单元格。