Excel 2016 VBA,宏录制,代码错误,.Sort方法缺失

时间:2018-07-25 16:01:22

标签: excel vba excel-vba excel-2016

全部

我确定Excel似乎存在问题,因为它已安装在我们办公室中的一台计算机上。我有一些对特定工作表进行排序的VBA代码,并且该代码在我的计算机上可以正常运行。但是在另一台计算机(也可能有另一台计算机)上,我收到Runtime 9或Runtime 438错误。拉出我的头发后,重新编写此代码以查看在此神秘机上是否可以使用其他方式对工作表进行排序,然后尝试使用“开发人员工具栏”记录“排序”宏以查看是否可行。我发现神秘机中缺少.Sort方法。请参阅下面的无效代码。请注意,缺少“ .Sort”和介于(“ RSVP报告”)和SetFirstPriority之间的两个句点。

Sub Macro1()
'
' Macro1 Macro

ActiveSheet.("RSVP Report")..SetFirstPriority.
ActiveSheet.("RSVP Report")..SetFirstPriority.Add  := Range("A2:A23"), Value _
    := xlSortOnValues, Query := xlDescending,  := xlSortNormal
ActiveSheet.("RSVP Report")..SetFirstPriority.Add  := Range("C2:C23"), Value _
    := xlSortOnValues, Query := xlAscending,  := xlSortNormal
ActiveSheet.("RSVP Report")..SetFirstPriority.Add  := Range("B2:B23"), Value _
    := xlSortOnValues, Query := xlAscending,  := xlSortNormal
With ActiveSheet.("RSVP Report").
    .SetLastPriority Range("A1:P23")
    .StopIfTrue = xlYes
    .Type = False
    . = xlTopToBottom
    .ScopeType = xlPinYin
    .Delete
End With
End Sub

查看有效的代码并记录在我的计算机上。请注意.Sort的存在。

Sub Macro2()
'
' Macro2 Macro

Range("A1:P23").Select
ActiveWorkbook.Worksheets("RSVP Report").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("RSVP Report").Sort.SortFields.Add Key:=Range( _
    "A2:A23"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
    xlSortNormal
ActiveWorkbook.Worksheets("RSVP Report").Sort.SortFields.Add Key:=Range( _
    "C2:C23"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
    xlSortNormal
ActiveWorkbook.Worksheets("RSVP Report").Sort.SortFields.Add Key:=Range( _
    "B2:B23"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
    xlSortNormal
With ActiveWorkbook.Worksheets("RSVP Report").Sort
    .SetRange Range("A1:P23")
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
End Sub

从“安装选项”看,两台计算机之间的一切似乎都是相同的。有谁想过如何添加缺少的模块,以便使我的代码在神秘机上运行?第二/第三题。有没有人想过这是怎么回事或以前有没有人看过?

感谢您提供的任何见解。希望响应不会是“卸载并重新安装”。我正在设法使我们的技术部门参与进来,因为他们的解决方案可能不及时或无济于事。

4 个答案:

答案 0 :(得分:1)

尽管解决方案仍然是个谜,但这已得到解决。在对Office 2010和2016进行几次卸载/安装/修复后,最终从MS运行.NET修复程序,Excel 2016宏排序操作现已开始工作。我怀疑.NET修复(https://docs.microsoft.com/en-us/dotnet/framework/install/repair)可能一直是解决方案,尽管直到深入进行卸载和修复操作之前,我都没有收到任何表明需要它的错误。

答案 1 :(得分:0)

工作簿上没有显示“排序”的计算机上是否缺少参考?我遇到的问题是,缺少的引用具有完全不相关的功能,这些引用在运行时停止识别。也许这也会影响宏记录器。

答案 2 :(得分:0)

我在安装了新Office 2016的计算机上遇到了相同的问题,该计算机运行用Office 2010编写的宏代码。我尝试在Excel 2016中记录排序例程,并得到与原始帖子中所示结果相同的结果。

此后,我发现该代码可在另一台Office 2016计算机上运行,​​但Office从2010年升级到2016年。2016年是损坏的计算机上唯一安装的版本。升级后的计算机在“ C:\ Program Files(x86)\ Common Files \ Microsoft Shared”结构中同时具有OFFICE14和OFFICE16文件。损坏的机器只有OFFICE16。将OFFICE14文件复制到损坏的计算机上没有帮助。

虽然我可以通过卸载2016,然后安装2010并升级到2016来解决此问题,但是看来应该有更好的方法。如果有人有更好的方法来解决此问题,请告诉我们!谢谢。

答案 3 :(得分:0)

先前安装的2010不是解决方案。我下载了MS Windows 10版本1809安装媒体,并在新的虚拟机上安装了Win10 Pro,然后安装了所有Windows更新,以使其尽可能接近问题PC。然后,我安装了Office 2016,宏工作正常。从那以后,我一直在比较...

  • 已安装的应用程序-VM具有一堆PC上的过时软件游戏 不(感谢MS!)。除此之外,VM上没有任何东西 PC没有。
  • 已安装的可选功能-如果在VM上,则也在PC上。
  • 为Office 2016安装的功能-相同
  • 再次,通过控制面板->程序和功能-如果在VM上,则在PC上。
  • 通过控制面板->程序和功能->打开和关闭Windows功能-虚拟机未启用.NET Framework 3.5,因此我启用了该功能,重新启动后,该宏仍然有效。

哦,为了记录下来,我在Office安装上进行了一次修复,但无济于事。

所以这个谜仍然存在。问题PC是一台戴尔计算机,该计算机具有OEM安装的Windows Home副本,我已经将其升级到Pro。下一步(除非有人在我到达那里之前找到解决方案),包括找到备用HD并按照出厂规格进行系统还原,以查看问题是否出在OEM Windows安装上。