根据单元格

时间:2018-01-17 17:58:40

标签: excel vba excel-2010

我有一个基于切片器选择更改大小的动态表,因此有时表可能包含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

此代码似乎不起作用。该表不断增长,并没有停留在“零售总额”,所以我希望得到一些帮助。

1 个答案:

答案 0 :(得分:1)

我运行此代码并且它有效,除了一个错误的错误。我修好了:

ob.Resize ob.Range.Resize(Lrow1 + 1)

您应该验证包含“零售总计”的单元格实际上是否包含该逐字短语,而不是任何前导或尾随空格。您可以通过将此代码放在您的即时窗口中进行测试,看看它是否真实:

? range("A5").Value = "Retail Total"

将A5替换为恰好包含“Retail Total”的任何单元格。