【发布时间】:2020-05-19 08:52:02
【问题描述】:
我有一个 Excel 工作簿,其中包含约 100 个 SQL 连接表,这些表位于单独的工作表上,每周都会刷新。我当前的代码是一个循环宏(如下),它遍历每个工作表并刷新每个表。
Sub RefreshLoop()
Dim wks As Worksheet
Dim qt As QueryTable
Dim lo As ListObject
For Each wks In ActiveWorkbook.Worksheets
For Each lo In wks.ListObjects
If lo.SourceType = 3 Then
With lo.QueryTable
.BackgroundQuery = False
.Refresh
End With
End If
Next lo
For Each qt In wks.QueryTables
qt.Refresh BackgroundQuery:=False
Next qt
Next wks
Set qt = Nothing
Set wks = Nothing
End Sub
我想要做的是在表格刷新后,在每个表格的底部添加一个新行,其中包含第一列中的当前日期。我尝试使用下面的代码,然后在循环中调用它,但我遇到了各种我不太理解的错误。每个表的列数完全相同,但行数会根据参数的变化而变化。
Dim newrow As ListRow
Set newrow = lo.ListRows.Add(AlwaysInsert:=True)
With newrow
.Range(1) = Date
End With
错误示例;
Run-time error '91':
Object variable or With block variable not set
我正在努力弄清楚我需要使用 Excel 2019 做什么
【问题讨论】:
-
Tbl未定义。您正在为您的列表对象使用lo。 -
你能分享一下你所面临的错误的快照吗?
-
@salsinga 我添加了一个弹出的主要错误示例
-
@BigBen 是的,对不起,那是我的错误,我还在不断地发现错误
-
newrow代码块在您的主代码块中的什么位置?
标签: excel vba loops listobject