Excel 基于单元格中的文本动态调整表格大小
我有一个动态表,它根据切片器的选择来改变大小,所以有时表可能包含4行,有时7行,有时15行,等等 无论表格大小如何,A列的最后一行始终等于“零售总额” 我的桌子基本上如下所示:Excel 基于单元格中的文本动态调整表格大小,excel,vba,excel-2010,Excel,Vba,Excel 2010,我有一个动态表,它根据切片器的选择来改变大小,所以有时表可能包含4行,有时7行,有时15行,等等 无论表格大小如何,A列的最后一行始终等于“零售总额” 我的桌子基本上如下所示: +--------------+------+------+------+------+------+------+ | ColA | ColB | ColC | ColD | ColE | ColF | ColG | +--------------+------+------+------+------
+--------------+------+------+------+------+------+------+
| 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
这个代码似乎不起作用。表一直在增长,并没有停在“零售总额”上,所以我希望能得到一些帮助。我运行了这段代码,它运行正常,除了一个off by one错误。我用以下方法修复了它:
ob.Resize ob.Range.Resize(Lrow1 + 1)
您应该验证包含“Retail Total”的单元格是否实际包含该逐字短语,而不是任何前导或尾随空格。您可以将此代码放在即时窗口中进行测试,看看它是否为真:
? range("A5").Value = "Retail Total"
将A5替换为当前包含“零售总额”的单元格。这不应该是
吗,而应该是吗,直到为止?啊,这太令人沮丧了。在我试图调整大小的表上方有另一个表(也从A列开始)。现在,当我运行代码时,我得到“运行时错误'13:类型不匹配”。知道如何解决这个问题吗?好的,我对代码做了一些修改,它似乎没有导致错误,但代码没有按预期工作。在“零售总额”之后,将生成大约10个额外的行。我想这可能与表6上面的数据有关,也在A列中。试试这个:ob.Resize ob.Range.Resize(Lrow1+ob.Range.row)似乎不起作用。即使我的桌子上方没有任何东西,但我将桌子向下移动4行(到a5而不是a1),在“零售总额”之后还会有4行。事实上,如果我做ob.Resize ob.Range.Resize(Lrow1+ob.Range.row),会有9个额外的行。如果我执行ob.Resize ob.Range.Resize(Lrow1),则会有4个额外的行。应该是ob.Resize ob.Range.Resize(Lrow1+1-ob.Range.row)