VBA在我的计算机上运行,​​但在其他计算机上无法运行,则抛出错误438

时间:2019-02-21 14:32:42

标签: excel vba

我创建了一个宏来取消保护工作表,取消选择空白,对列进行排序,重新应用空白,然后重新保护工作表。该代码在我的计算机上可以很好地工作,但是当我尝试在其他计算机上打开它时,我会得到

  

错误代码438。

注意:我需要选择空格,因为我正在尝试使用公式对列进行排序。这些列将无法正确排序,因为该公式在缺少信息的区域中显示空白。

所有计算机都具有相同的操作系统,相同的excel版本,并且该文件保存在共享驱动器上,因此应无任何更改。我已经确保在每台计算机上都启用了宏,但是仍然无法正常工作。

下面是代码。有人看到我缺少的任何明显的问题吗?我是VBA和Macros的新手,但我已经进行了大量的阅读和研究,似乎无法弄清楚。

下面是更新的代码:

Sub Short2Long()
'
' Short2Long Macro
'

'
    Worksheets("Reunification").Unprotect
    Worksheets("Reunification").ListObjects("Reunification_Main").Range.AutoFilter Field:=1, _
        Criteria1:="<>"
    ThisWorkbook.Worksheets("Reunification").ListObjects("Reunification_Main"). _
        Sort.SortFields.Clear
    ThisWorkbook.Worksheets("Reunification").ListObjects("Reunification_Main"). _
        Sort.SortFields.Add2 Key:=Range("Reunification_Main[[#All],[Days in Care]]") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortTextAsNumbers
    With ThisWorkbook.Worksheets("Reunification").ListObjects( _
        "Reunification_Main").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Worksheets("Reunification").ListObjects("Reunification_Main").Range.AutoFilter Field:=1
    Worksheets("Reunification").Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
        False, AllowFormattingColumns:=True, AllowFormattingRows:=True, _
        AllowSorting:=True, AllowFiltering:=True

1 个答案:

答案 0 :(得分:0)

最后弄清楚了问题所在。它与Excel 365 vs 2010问题有关。

Excel 365期望:

Sort.SortFields.Add2

但是Excel 2010期望:

Sort.SortFields.Add

尽管所有计算机都运行Excel 365,但是删除2可以解决此问题。