如何解决VBA动态表ListObject
因此,在进行了一些研究之后,我错过了某些地方...首先,我将SQL记录集链接到我的电子表格,因此我成功获取了以“ B21”单元格开头的9999行和16列。为此,我用这段代码创建了一个名为“ MyScreener”的表:
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
很酷,所以现在我有一个新列要添加到表中,例如,我尝试了一些类似这样的代码:
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,这显然没有考虑我的上一列(第十七列)。
有没有人可以给我一个提示,以创建一个在我获取新请求时动态更新自身的表?像每个请求一样,SQL发送新的行数,并且由于它已经与我的电子表格链接了,因此,spreadsee中的表也将更新也很好。
希望我的解释会很清楚。
预先感谢您的关注!
解决方法
我有点困惑。 通常,如果您已经在表中添加了列,它将调整大小。
如果此代码是要扩大表格以首先创建一个额外的列,则必须在当前列数上加上一(1)。
所以:
tbl.Resize tbl.Range.Resize(lRow,lCol + 1)
顺便说一句,您应该将lrow和lcol声明为Long而不是Integer。
Integer会将行限制为32767,并且在内部,无论如何,整数都会转换为Longs。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。