[英]Are there any compatibility issues with Macros between Excel 2013 and 2016
我們有一個用戶擁有一個帶有宏的舊 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 Basic 的了解不夠,無法確定是什么上面的代碼在每一步都在做。
看起來像是記錄了一些原始代碼。 這(下面)似乎提供了相同的功能,刪除了無關和不必要的代碼。 (但我當然看不到原始表,所以請謹慎對待)
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
看看這是否仍然會出錯。
目前,我無法找到可能與此問題相關的 2016 年的任何更改。
我剛剛對宏第一次運行生成的無效引用進行了手動更正,並允許它重新運行(顯然每次都成功)。
我已要求最終用戶持續監控工作簿中的數據以確保其准確,並將以類似的方式解決未來任何具有相同問題的工作簿。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.