2013年に問題なく使用されていたマクロを持つ古い97-2003 Excelドキュメントを持つユーザーがいます。Excel 2013と2016の間にマクロとの互換性の問題があります
週末に2016にアップグレードしました。ブック内の最初のマクロを実行すると、通常は値が表示されるセルで#REF!
奇妙なことに、マクロの実行後に手動で参照の一部を修正してからマクロを再度実行すると、2回目に同じ問題は発生しません。
マクロがこのように動作する可能性のある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について十分に知りません。
"マクロが何をすべきかについてはっきりしていない*"コードが何をしているのか分からなければどうすれば助けてくれるだろうか?コードは完全に書き直す価値があるようですが(悪い習慣の混乱のように見えます)、最初に何をすべきかを知る必要があります。 –
マクロは10年以上前に記録されていたため、IT部門の大部分とレポートを使用しているエンドユーザーは、当時会社でさえもなかったためです。マクロを記録したユーザーは、もはやビジネスに慣れていないので、マクロの背後にある意図が何であるかを尋ねることはできません。エンドユーザーは、どのフィールドがマクロによって調整されると予想されているのかを明らかにすることができますが、明らかにエラーを強調表示していますが、私の声明が意味するのは、マクロが目標を達成する方法)。 – Eds
あなたの状況を理解していますが、ここでそのような問題を見つける機会はありません。このコードでは、何もすばらしいことはなく、1つのコピー貼り付けアクション、1つの自動記入アクション(おそらく数式をコピーする)、およびいくつかのクエリテーブルをリフレッシュすることはありません。それでおしまい。しかし、あなたが示したコード部分から出てくるものがここで間違っていると言うのは、ほとんど不可能です(記録されているので乱雑に見えますが、何も間違っているとは限りません)。このような質問をするのは間違った場所かもしれません。代わりに、数式やクエリテーブルなど、ファイル全体をチェックできる人を雇う必要があります。 –