簡體   English   中英

Excel 2013 和 2016 之間的宏是否存在任何兼容性問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM