首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBA动态表(ListObject)

VBA动态表(ListObject)
EN

Stack Overflow用户
提问于 2020-08-14 16:49:52
回答 1查看 365关注 0票数 0

所以,经过一些研究后,我错过了一些东西.首先,我将我的SQL记录集链接到我的电子表格,因此我设法从单元格"B21“开始获取9999行和16列。在此基础上,我使用以下代码创建了一个名为"MyScreener“的表:

代码语言:javascript
复制
Sub Create_Table()

    Dim Rn As Range
    Set Rn = shtEquity.Range("B21").CurrentRegion
    Dim tbl As ListObject
    Set tbl = shtEquity.ListObjects.Add(xlSrcRange, Rn, xlYes)
    With tbl
        .Name = "MyScreener"
        .TableStyle = "TableStyleMedium18"
    End With

End Sub

很酷,所以现在我有一个新列要添加到我的表中,我尝试了一些代码,例如:

代码语言:javascript
复制
Dim tbl As ListObject
Dim lrow As Integer
Dim lcol As Integer

Set tbl = shtEquity.ListObjects("MyScreener")

lrow = tbl.Range.Rows.count
lcol = tbl.Range.Columns.count

tbl.Resize tbl.Range.Resize(lrow, lcol)

这一次编译但什么也不做,给出了lrow = 9980和lcol = 16,这显然没有考虑到我的最后一列(第17列)。

有没有人可以提供提示,在我获取新请求时创建一个动态更新自己的表?与每个请求一样,SQL发送新的行数,并且由于它已经与我的电子表格链接,所以电子表格中的表也会更新。

希望我的解释足够清楚。

提前感谢您的收看!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-14 18:47:30

我有点困惑。通常,如果您已经向表中添加了一列,它将调整大小。

如果这段代码首先要扩大表以创建一个额外的列,那么您必须在当前列计数中添加一个(1)。

所以:

代码语言:javascript
复制
   tbl.Resize tbl.Range.Resize(lRow, lCol + 1)

顺便说一句,你应该宣布lrow和lrow是长的而不是Integer。

整数将限制您的行数为32767,而且在内部,整数将被转换为Long。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63416942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档