所以,经过一些研究后,我错过了一些东西.首先,我将我的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,这显然没有考虑到我的最后一列(第17列)。
有没有人可以提供提示,在我获取新请求时创建一个动态更新自己的表?与每个请求一样,SQL发送新的行数,并且由于它已经与我的电子表格链接,所以电子表格中的表也会更新。
希望我的解释足够清楚。
提前感谢您的收看!
发布于 2020-08-14 18:47:30
我有点困惑。通常,如果您已经向表中添加了一列,它将调整大小。
如果这段代码首先要扩大表以创建一个额外的列,那么您必须在当前列计数中添加一个(1)。
所以:
tbl.Resize tbl.Range.Resize(lRow, lCol + 1)顺便说一句,你应该宣布lrow和lrow是长的而不是Integer。
整数将限制您的行数为32767,而且在内部,整数将被转换为Long。
https://stackoverflow.com/questions/63416942
复制相似问题