Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 基于单元格中的文本动态调整表格大小_Excel_Vba_Excel 2010 - Fatal编程技术网

Excel 基于单元格中的文本动态调整表格大小

Excel 基于单元格中的文本动态调整表格大小,excel,vba,excel-2010,Excel,Vba,Excel 2010,我有一个动态表,它根据切片器的选择来改变大小,所以有时表可能包含4行,有时7行,有时15行,等等 无论表格大小如何,A列的最后一行始终等于“零售总额” 我的桌子基本上如下所示: +--------------+------+------+------+------+------+------+ | ColA | ColB | ColC | ColD | ColE | ColF | ColG | +--------------+------+------+------+------

我有一个动态表,它根据切片器的选择来改变大小,所以有时表可能包含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

这个代码似乎不起作用。表一直在增长,并没有停在“零售总额”上,所以我希望能得到一些帮助。

我运行了这段代码,它运行正常,除了一个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)