我们的用户拥有一个带有宏的旧97-2003 Excel文档,他们在2013年使用并运行时没有问题。
我们现在已经在周末升级到2016,当运行工作簿中的第一个宏时,通常会向我们显示值的单元格现在显示为#REF!
奇怪的是,如果我们在宏运行后手动更正了一些引用,那么再次运行宏,它第二次没有相同的问题。
我们想知道2016年是否有任何可能导致宏以这种方式行为的变化?
我们正在运行的第一个宏如下:
Sub Update()
'
' Macro1 Macro
' Macro recorded 28/06/2007 by PETER WILSON
''
'
Sheets("DCodes2").Select
Range("C4").Select
Application.CutCopyMode = False
Selection.QueryTable.Refresh BackgroundQuery:=False
Sheets("Summary").Select
Range("D23").Select
Sheets("Sales Inv").Select
Range("a2").Select
Selection.QueryTable.Refresh BackgroundQuery:=False
Range("K5").Select
Sheets("Invoices").Select
Selection.QueryTable.Refresh BackgroundQuery:=False
Sheets("Job Costs").Select
ActiveWindow.LargeScroll ToRight:=-1
Range("C2").Select
Selection.QueryTable.Refresh BackgroundQuery:=False
ActiveWindow.SmallScroll ToRight:=6
Range("N2:T2").Select
Selection.AutoFill Destination:=Range("N2:T284")
Range("N2:T284").Select
Range("N3").Select
Range("J28").Select
Sheets("Job Costs").Select
ActiveWindow.SmallScroll ToRight:=-1
Range("N2:T2").Select
ActiveWindow.LargeScroll ToRight:=-2
ActiveWindow.SmallScroll ToRight:=9
Selection.AutoFilter Field:=1
Range("N2:T2").Select
Selection.Copy
Range("N3").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Paste
Sheets("Daybook").Select
Range("B2").Select
Application.CutCopyMode = False
Selection.QueryTable.Refresh BackgroundQuery:=False
Sheets("Job Costs").Select
Range("N2:U2").Select
Sheets("Summary").Select
Range("I8").Select
'
End Sub
我不清楚宏应该做什么,所以我犹豫不决,如果我出错了,我会尝试手动纠正用户,而且我对Visual不太了解基本来确定上面代码在每一步中做了什么。
答案 0 :(得分:0)
看起来有些原始代码被录制了。这(下面)似乎提供相同的功能,删除无关和不必要的代码。 (但我当然不能看到原始的表格,所以要谨慎对待)
Sub EquivalentFunctIonality
Dim qt as QueryTable
Dim ws as Worksheet
For each ws in Worksheets
For Each qt in ws.querytables
qt.refresh BackgroundQuery:=False
Next qt
next ws
With Worksheets("Job Costs")
.Range("N2:T2").Copy .range(Range("N3"),.range("n3").End(xlDown))
End With
End Sub
看看这是否仍然存在错误。
答案 1 :(得分:0)
目前我还未能找到与此问题相关的2016年任何变化。
我刚刚对第一次运行宏生成的无效引用进行了手动更正,并允许它重新运行(显然每次都成功运行)。
我已经要求最终用户持续监控工作簿中的数据以确保其准确性,并且将以类似的方式处理具有相同类型问题的任何未来工作簿。