sql - 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 发送新的行数,并且由于它已经与我的电子表格链接,因此电子表格中的表也可以更新。
希望我的解释足够清楚。
提前感谢您的关注!
解决方案
我有点困惑。通常,如果您已经在表格中添加了一列,它将调整大小。
如果此代码是先扩大表格以创建一个额外的列,那么您必须将一 (1) 添加到当前列数。
所以:
tbl.Resize tbl.Range.Resize(lRow, lCol + 1)
顺便说一句,您应该将 lrow 和 lcol 声明为 Long 而不是 Integer。
Integer 会将您的行数限制为 32767,并且在内部,整数无论如何都会转换为 Longs。
推荐阅读
- java - 存储库不会 Beanify
- android - 文本大小的按钮在单击 2 次后有效
- sql - SQL查询匹配表1到表2
- css - 使用spring security和thymeleaf时无法加载我的css
- ios - 使用 HealthKit 结果填充 TableView - Swift
- javascript - 需要指导将 excel 修改为 JSON javascript 代码以每组数据输出一个 JSON
- sublimetext3 - 未注册的崇高文本
- java - 如何使用鼠标滚轮增加圆周内的圆的大小?
- android - 为 Android 编译 Unreal Engine AR 蓝牙模板时出现“致命错误:找不到‘initializer_list’文件”
- vb.net - 使用 Visual Basic 在条形菜单上添加 Itens 时出现问题