我已经环顾了一会儿,却找不到这个问题的答案。在我的VBA中,我有一行创建一个新的pivottable并将其插入工作表中,如此 -
Application.StatusBar = MyPC.RecordCount
ActiveWorkbook.PivotCaches.Create(SourceType:=xlExternal, SourceData:= _
ActiveWorkbook.Connections("ACCESS2"), Version:=xlPivotTableVersion14). _
CreatePivotTable TableDestination:="Dashboard!R20C1", TableName:= _
"PTDashboard", DefaultVersion:=xlPivotTableVersion14
Application.StatusBar = False
当我处于构建状态的早期阶段时,状态栏会显示一个计数器,显示它从Connection连接到pivotCache的记录数。它已经出于某种原因,我试图模仿它正在做的事情(它可能是Excel 2013的事情,因为我一直在家庭计算机上的这个项目上工作)。
因为可能有几十万条记录,所以可能需要一分钟,我希望向用户表明它正在发生。
我通常在一个循环中这样做,但由于我没有那个选项,我有点难过。在后台的某个地方我可以从中读取这些数据吗?我希望我已经足够清楚了。提前谢谢。
答案 0 :(得分:2)
我认为您无法以您希望的方式访问数据,但为了避免应用程序挂起或代码停止工作的外观,您可以执行以下操作。< / p>
创建一个小UserForm
,并在其上放置一个标签,上面有一条消息,表明您的宏正在做某事,例如“请等待Pivotecache加载...这可能需要最多1分钟。“
然后,在调用PivotCache之前立即显示vbModeless
,然后立即将其卸载。
我用循环测试了这个,但我认为它应该适用于你正在做的事情,例如:
Sub Test()
UserForm1.Show vbModeless
ActiveWorkbook.PivotCaches.Create(SourceType:=xlExternal, SourceData:= _
ActiveWorkbook.Connections("ACCESS2"), Version:=xlPivotTableVersion14). _
CreatePivotTable TableDestination:="Dashboard!R20C1", TableName:= _
"PTDashboard", DefaultVersion:=xlPivotTableVersion14
Unload UserForm1
End Sub
答案 1 :(得分:0)
你可以尝试一下吗?
Application.StatusBar = "Creating Pivot... Please be Patient"
DoEvents
ActiveWorkbook.PivotCaches.Create(SourceType:=xlExternal, SourceData:= _
ActiveWorkbook.Connections("ACCESS2"), Version:=xlPivotTableVersion14). _
CreatePivotTable TableDestination:="Dashboard!R20C1", TableName:= _
"PTDashboard", DefaultVersion:=xlPivotTableVersion14
Application.StatusBar = "Pivot Created!"
DoEvents